Keleigh Zolnierek – Software Development Engineer in Test

Keleigh Zolnierek – Software Development Engineer in Test


Software Development Engineer in Test – User Sessions
Chicago, IL
Joined: 2016

Test Engineer Keleigh pays it forward by participating in programs and volunteer efforts focused on building, developing, and motivating women in Technology.

What’s your favorite Groupon memory?

The first time I helped with Scout Out Engineering, I was so impressed by how much the scouts knew. It seems like schools have started teaching basic computer science concepts in elementary which is awesome!

What were you looking for in a company while you were job hunting?

Prior to joining Groupon, I interned at Thompson Reuters over the summer. It was an excellent internship program and the people who worked there were incredible. When I was looking for a full-time position, I knew that I wanted to move out of Michigan (which is why I did not choose Thompson Reuters) and that I still wanted to do Software Development. After that, I also focused on companies that would allow me to grow my career and further my programming knowledge. I was not sure that I wanted to work in Test Engineering, but decided based on other factors, such as location, benefits, and the people, that it would be the best fit at the time. I am happy with where I ended up and think it turned out well.

What does your family think you do?

Mom: “Test and fix computer programs”

Dad: “I really don’t know…..” (After telling him to guess.) “Responsible for the quality control for previously designed programs.” 

Brother: “Find mistakes.”

I’m very impressed with all of the answers! They are way closer than just making cool Powerpoint slides, which is what they thought for a while in college.

What’s unique about Engineering at Groupon?

There is always someone willing to explain a concept or process when you have questions about it.

What was your first impression of Groupon?

My very first impression of Groupon was at the career fair. They were one of the few companies that had t-shirts in women’s sizes and fits which impressed me. When I interviewed, I really liked how casual, yet knowledgeable the interviewers seemed. Also, it probably did not hurt that my interview in the Palo Alto office ended with fro-yo. 🙂

Can you tell us about your work promoting women in Tech?

I’ve recently started co-leading Groupon’s Lean In Circle, which is currently based in Chicago; however, we do have an engineer who joins from Palo Alto. We meet regularly to learn and grow together, specifically in the engineering space. There are three areas we focus on: professional, leadership, and technical development. We hope to grow our circle to include more women from different Groupon offices.

What’s surprised you the most about working at Groupon?

The random company things that Groupon does are awesome. Some of my favorite things were Halloween caramel apples and cider last year, laptop stickers, Women@Groupon handing out ice cream, the building’s ice cream social and rooftop doughnuts, and Geekfest weekly tech presentations (which are open to the public). These seem like small things, but I really appreciate them.

Tell us about the SDET team.

As an SDET there are a few different team setups at Groupon. For my team, I have two sections: my testing colleagues and my feature team. My testing team is made up of SDETs who are also doing front-end testing for Groupon. With that team there are different features—such as internal tools or frameworks—that we develop.

My feature team is the group of people who are responsible for testing the user sessions material. The people included in this are a team manager who makes sure our team stays on track for team goals, a product manager who decides what new features we will try out, a developer who turns the feature ideas to code, two Software Test Engineers who manually test features, and me who automates the testing process!

What’s your favorite language?


What’s your favorite part of your team’s software development process?

I really like when we find a bug. If there aren’t any found, it makes me a little nervous and I feel like we may be missing something.

How does your work connect to Groupon’s mission of building the daily habit in local commerce?

I make sure that the sign-in page is not broken so users are able to make purchases.

What are your favorite local businesses?

Doughnut Vault and Mindy’s Hot Chocolate.

Vim or emacs?

Vim, because it’s what I used in school.

Tabs or spaces?




Groupon World Headquarters

Groupon’s project managers are ‘the air traffic controllers of the engineering department’

Groupon’s project managers are ‘the air traffic controllers of the engineering department’


Groupon’s project managers are ‘the air traffic controllers of the engineering department’

30 October 2017

The Groupon Project Management Team in Chicago

Photograph by Chris Murphy

It was 4 a.m. when confirmation finally came in from the engineers: Groupon had successfully completed the online integration of LivingSocial, which the company acquired in 2016.

Groupon’s project management team had been toiling for months, working with engineers and key stakeholders on this large-scale project. With about 50 other staffers from different departments, they waited and watched into the wee hours, some via conference, until the “cutover” was finally confirmed. This means that users could now access the integrated content — and two weeks ahead of schedule.

That’s when an engineer came in with a bottle of Cristal and a “cutover” cannoli cake.

“Besides my wedding cake, that was the best cake I’ve ever had,” said Karen Hyatt, technical project manager. “There was something about being bleary-eyed at 4 a.m., eating cutover cake with the team you worked so hard with over six months that was really just special.”

Read the complete article at Built In Chicago.

How I Learned to Love Unit Testing with Toothpick

How I Learned to Love Unit Testing with Toothpick

How I Learned to Love Unit Testing with Toothpick

Siqi Guo
Android Software Engineer
October 13, 2017

Once upon a time, you started a new app and everything was simple and nice: a few features, a simple UI and that’s it. But then it became bigger and bigger, and the logic became more complex, more entangled. Suddenly, you have a database, you have multiple network calls, several components talking to each others on different threads, callbacks everywhere and multiple user interactions.

The state of your app is modified from everywhere and at any time. At this point you can’t even clearly say in which state your app is after a user interacts with a few elements in the UI.


In object-oriented programming, a class usually depends on other classes. However, as a good practice, you should only test one method of one class at a time. If a test interacts with more than one class, it would not be a unit test, but an integration test instead. In that case, when the test fails, it’s not clear which unit caused the failure. It could be the class under test or one of its dependencies.

Mock objects are commonly used to isolate the class under test from its dependencies. They are created to mimic the behavior of real objects. We can use mocked versions of the dependencies instead of real ones when unit testing. The class under test is unaware of whether the dependencies are mock or real objects. So we can test that the class under test behaves as expected by controlling the state of the mocks.

Here is an app, inspired from our business domain at Groupon, that sells deals. It uses the MVP pattern:

  • DealActivity is used to display the details of a deal.
  • DealPresenter is the presenter of DealActivity. It is responsible for reacting to user interaction and updating the view. DealPresenter has four dependencies, DealUtil, DealApiClient, WishlistManager and DealViewStateModel.

  • DealUtil is an utility class for deals.
  • DealApiClient is used to make network calls.
  • WishlistManager is used to add or remove the deal from the wishlist.
  • DealViewStateModel contains no logic. It is simply a bundle of variables that represent the view state. There is no method in that class, so nothing to mock.

DealPresenter needs to be isolated from its dependencies, when we are testing it. We can do this by creating mock objects for DealUtil, DealApiClient and WishlistManager. Then, expose these mocks to DealPresenter with Dependency Injection.

Dependency Injection (DI)

The intent behind DI is to decouple the dependencies from a class by passing in instances of those dependencies.

In the example above, instances of DealUtil, DealApiClient and WishlistManager are not created by DealPresenter, but are passed into its constructor.

How can DI make mocking easy? The class under test is not in charge of instantiating it’s dependencies. They will be passed to the object by the DI and the object just has to use them. Consequently, when unit testing, we can pass in mock objects which have the same interface as the real dependency.

In the previous example, we can pass in mocks for DealUtil, DealApiClient and WishlistManager, when testing DealPresenter. Note that we do not inject it but instantiate it manually, hence there is no need to mock the DealViewStateModel.


DI seems simple to implement in the example above, but if there are more classes in project, it’s not so simple anymore. In the graph below, class A has dependencies B and C, and class C has dependencies D and E. If we want to create these classes using DI, we need to inject D and E into C, then we need to inject B, C, D and E into A. Try to imagine in a real Android app, the dependency tree may be much bigger, it is a disaster to implement the DI manually. 😱

So we usually use dependency injection frameworks. You may have heard of some popular ones such as Dagger or Roboguice. At Groupon, we actively contribute to many open source libraries and have also developed a DI library named Toothpick. It’s as fast as Dagger, but designed with ease-of-use in mind. If you are interested in the library, you can get more info from Github.

Creating dependencies is really easy with Toothpick, we just need to annotate the fields with @Inject. Toothpick will create the dependencies and assign them to the right field for us:

But let’s go back to our topic, why am I talking about Toothpick? Because it comes with advanced test support!


Toothpick supports Mockito and EasyMock test frameworks. We will use Mockito in our example. Mockito comes with a JUnit Rule, MockitoRule. MockitoRule injects mocks into the fields that are annotated with @Mock, that way we can use them both in our test and in the class under test at the same time.

Afterwards, we can include the ToothPickRule provided by Toothpick. It does two things:

First, the ToothPickRule will create a real instance of the class under test.

Smart people doing interesting work

Second, it will inject the dependencies of the class under test. If we have created a mock using the MockitoRule, it will inject that mock inside the class under test. Otherwise, it will create a real object and inject it.

So for our example these would be the steps:

  1. ToothPickRule creates dealPresenterUnderTest.
  2. It finds four fields annotated with @Inject in DealPresenter: DealUtil, DealApiClient, WishlistManager and DealViewStateModel.
  3. It tries to inject DealUtil into dealPresenterUnderTest and finds that we have defined a mock for this type with MockitoRule, so it will inject the mock.
  4. Same with DealApiClient and WishlistManager.
  5. While injecting DealViewStateModel, as we haven’t defined any mock for that type, it will inject a real one.
  6. We have our class isolated and ready to be unit tested!


Although there are some alternative DI libs available for Android and Java, Toothpick is still worth checking out. It is effortless to use and provides powerful test support. Thanks to the ToothPickRule, we can inject the mocks inside the class that we are testing in an simpler manner.

Unit testing helps improve your code quality and it becomes more and more important as you scale your projects. With Toothpick, you will start to enjoy writing unit tests, so I recommend you to go try it out!

With 💚 , the Groupon Android team.

Thanks to daniel hw, Jaden Choi, Eric Farraro, Aolei Zhang, Stephane NICOLAS, David Luu, Weihua Wang, Alin Turcu, and Michael Ma.

Sviatlana Khilko – Software Test Engineer

Sviatlana Khilko – Software Test Engineer


Software Test Engineer – Mobile Team
Palo Alto, CA
Joined: 2015

Almost 6,000 miles separate California from Sviatlana’s homeland of Belarus, where she started off as a lawyer only to eventually become an Engineer in Silicon Valley.

What do you love about working at Groupon?

I really enjoy volunteering with my teammates, as it makes me feel amazing to give back to the local community.

What was your first role here?

I joined Groupon as a contract test engineer two years ago and then joined as a full-time Grouponer, thanks to my peers, managers, and mentors! Initially, I was an STE1 and now I’m an STE3. All of the people I work with teach me something new and that helps both me and my team grow.

So what was your first impression of Groupon?

I was impressed with the level of people awesomeness around me! Every person is unique, very smart, professional, each of them has reach personality and impressive background I keep learning from. I was also impressed with the very well-documented and clear process! How easy it is to ramp up, how detailed the instructions, are and how helpful everyone is.

Tell us something that might surprise us about you.

My life philosophy is to move forward, learn, explore and find enjoyment in the process. I’m always open to new opportunities, people, and situations that I meet on my path. All this and even more I get as a Test Engineer: unpredictability, the need to understand every little detail, the opportunity to work with smart, talented, extraordinary people. I got into the testing in an unusual way: I was born, grew up in, and got Master’s Degree in Law in Belarus. For some time I was engaged in scientific research in this field. Then, I worked as an editor in chief for one of the publishing houses. Later, when the IT industry began to grow rapidly, I decided to try myself in a new role and I’m incredibly happy about making this transition. It’s so great to have the opportunity to change things in life, but at the same time to have my background which helps me a lot in my current role.

What do your parents think you do?

I’m originally from Belarus (small eastern European country) and of course due to generational, cultural, language, and other gaps, it’s very challenging for my mom to understand exactly what I’m doing. But what I know for sure is that my mom is very proud of me and happy that I found a place I really enjoy working in! She notices all the time that I’m growing (personally and professionally) and loves to hear all the stories about Groupon. She takes my job very seriously, so no funny quotes from her! But my son thinks that my work is so great because we always have Nutella in the kitchen 🙂

What’s unique about Groupon Engineering?

Respect. It doesn’t matter what role you’re in, you’ll be listened to and your opinions will be taken seriously.

What do you enjoy most about your role?

Testing! It’s so exciting to be the very first person to see new features in action and to put yourself in the customers’ “shoes.”

Groupon World Headquarters

Women in Tech: A Self-Made Software Engineer Pt. II

Women in Tech: A Self-Made Software Engineer Pt. II

Today’s Women in Technology (WIT) blog entry is about Monica, a Theater Arts Communication Major who worked her way into Engineering. (No stage acting involved.) Click here to read part one of her story! Then come back!

How are things now and what’s next? I love working in Engineering. I’ve always loved learning new things and I enjoy being in a position where I have the confidence and knowledge to do many things and do them really well. I also have this opportunity to work and learn from really smart teammates. It’s a perfect balance of knowing and learning. I never thought I’d be in a job where continual learning was so important to me. You need to have the willingness to learn. That’s what really sets you apart here. I like that in Test Engineering I’ve really found a home. It fits what I’m best at and what I love doing – going through, finding bugs, finding out what’s broken, and what we can do to fix it.

What was your major, by the way? Theater Art Communications!


What’s your team like? My team is spread out across the globe. We have developers in Berlin, Palo Alto, Santiago, and some PMs here in Chicago. We might be physically far away from each other, but we’re always together screen sharing, on Hangout calls, etc., so being in this field has given me the opportunity to work with other people I never would’ve had a chance to work with. I am super, super fortunate to have such an awesome and supportive team!

Anything else? I started out as a student at Girl Develop It, which is a Meetup group aimed at women in technology. I started attending a lot of classes and eventually attended enough to where I got to know some of the co-leaders. At one point, they came to me and asked me to try to TA a class. This was scary at first, but I found that it’s a great way to reaffirm what you already know. I started TA’ing, which was nice because Groupon hosts a lot of the classes, so I got to just go downstairs and TA a class. After I had done this a couple times, the leaders decided they wanted to challenge me even more and asked me to actually teach a class.

Teaching, TA’ing, and even attending Girl Develop It is a wonderful experience. As a student, you know you are going into this safe place where you can ask any question and be taken seriously and get the help you need. As a teacher, you get to help create that environment! Some of my happiest moments are during classes when students start seeing their web pages take shape and get really excited that they are creating something from scratch that is all their own.

Thanks for reading the People Blog—a blog about people at Groupon. Want to break things with Monica? Click here to view some of our available openings in Tech.

A Self-Made Software Engineer Story Pt. I

A Self-Made Software Engineer Story Pt. I

Today’s Women in Technology (WIT) blog entry is about Monica, a Theater Arts Communication Major who worked her way into Engineering. (No stage acting involved.)

Name: Monica
Title: Software Test Engineer
Start date: December 2010

What’s your Groupon story?

I started at Groupon in 2010. My first roles were in our Editorial department, and I had the following titles at one point or another: Deal Creator, Quality Assurance Editor, and Site Editor. In Site Edit, I became more familiar with the site and how it functioned. I developed an interest in coding, and this is what prompted me to make the jump from Editorial to Engineering. In 2014, I became a Support Specialist for the Application Operations team, which was under the Engineering umbrella. As a Support Specialist, I did a lot of troubleshooting for internal tools, especially with the CS app. My team worked with the developers as the middle man to field requests that came in regarding the site.

And what do you do now?

I’m a Software Test Engineer!

What does “test” entail, exactly?

There are two types of testing: manual and automated. Right now, I’m doing more manual testing. I go through and manually test experiments, new features, and bug-fixes on the site by going through, clicking through, entering text into fields, etc.

How did you jump from Editorial to Engineering?

In Site Edit, part of our job was to go through and see if we were getting bug reports and to understand why the site wasn’t behaving like it was supposed to. We also started adding in HTML code to make small changes on the site. I thought it was cool that you could go through and input code to change the look and feel of the site.

I had been in Site Edit for a year, and I started do coding lessons on weekends, at night, during my lunch break, etc. It was a lot of work…a lot of Googling, asking for help from friends in Engineering, etc. It took about a year of going through and learning different languages to be confident enough to know that Engineering was where I wanted to be. I didn’t know where in Engineering I wanted to end up, though…whether development, design, etc.

It just so happened that Site Edit worked closely with Application Operations Support on a variety of things. I spent some time shadowing this team and it seemed like a good way to get my feet wet in the Engineering world at Groupon. I ended up moving into App Ops to become an Application Operations Support Specialist, which took some of the troubleshooting skills I used in Site Edit and also allowed me to apply some of the technical knowledge I learned from my personal studies. I liked the idea of being in an environment where I could easily get information on how the site works because I’d be on the front lines.

And then how did you make the jump from App Ops to Test Engineering?

While working in App Ops, I heard that the Consumer Test Engineering team was looking for another team member to join their ranks. App Ops Support worked closely with the CTE team and I knew, with all my legacy knowledge of the Groupon site and my growing technical skills, that I would be a great fit! After a brief training period, I was officially onboarded on to the CTE team in Test Engineering.

Stay tuned for part 2 of Monica’s story, which will go live next week!

Thanks for reading the People Blog—a blog about people at Groupon. Want to break things with Monica? Click here to view some of our available openings in Tech.