Monday, January 14, 2013

Test Engineers @ Google

By Yvette Nameth

At Google, we’re very big into highlighting individuals’ strengths and using them to make teams and products better. However, we frequently get asked “What do Test Engineers (aka TEs) do?” I pause when I get this question since it’s hard to speak for my peers - I test Google Maps rendering, which is just one small portion of what Google’s Test Engineers test.

In order to get a clearer picture of what Test Engineers are responsible for, I chatted with three of my colleagues. We were able to identify the underlying Test Engineers’ similarities, while highlighting the differences.

So what common themes do Test Engineers specialize in at Google?

We’re product experts:
Test Engineers need to become a “go-to” person for how their product works and integrates with other Google products. (You aren’t expected to have this before working with a product, but you need to figure out how to become one on any product you work on!) TEs need to understand use cases and contracts with other services, products, and features. We aren’t expected to write unit tests for other engineer’s code; instead we ensure product quality on the functional and integration aspects of the product.

We’re flexible:
Test Engineers are required to switch tasks and re-prioritize frequently. From unplanned catastrophes, to shifting launch calendars, to people asking us questions, our work is filled with interrupts. We determine how to ensure quality in the face of the interrupts.

We also modify our tests based on the pace of the development and understand that there is no one right way to test a product. Test Engineers adapt tools to meet their needs and understand when a tool just can’t get the job done.

We’re clear communicators:
We have to be able to communicate via test plans, design docs, bugs, email and code. Every day we work with a wide variety of people in different roles: Software Engineers, Software Engineers in Test, Product Managers, Usability Researchers, Designers, Legal Counsel, etc. We need to address these different audiences to make sure we’re either gathering the information that will help us build better strategies or presenting feedback that will help influence the product.

We’re good at coordination:
We are people who use our “in between the product and user” status to coordinate integration testing efforts between products. We may coordinate manual testing efforts by our manual testers; or we may make sure that test gaps are being addressed by “someone” (Test Engineer, Software Engineer in Test, or Software Engineer). We put our product knowledge and communication together with a bit of coordination and make sure that bugs are looked at and the product is getting tested hourly / daily.

We have impact:
Google Test Engineers have big impact. We hold responsibility thinking of ways that our products could fail in “real scenarios”; and then we add tests to make sure that the worst won’t come to pass.

How big is this? Well, in my case, I’m responsible for making sure Google Maps represents a map that is useful to my relatives in the middle of rural Montana as well as my friends living in London, Paris or Sydney. When you add to that the billions of other users in different regions, speaking different languages and using the map for different reasons, I know that my testing is impacting their ability to get around and find out information about the physical world around them safely.

We code:
The other most common question is “Do you write code?” The answer is yes; Test Engineers at Google do code.

The three aspects that generally differentiate what a Test Engineer does day-to-day depend on the following:

Individual’s Strengths & Interests:
Everyone is different and every TE has different passions, strengths and areas of expertise. Thankfully, Google’s a big enough company that many different areas of testing are available, and we gravitate to testing products we like. All TEs start with core competencies in testing, coding, and algorithms. How a TE applies this knowledge varies.

The Type of Product:
Desktop, web app or mobile? Frontend or backend? The technologies that our products use and run on create a lot of variation in what and how we test.

The Product’s History / Lifecycle:
Early concept products don’t resemble those that exist in production. And the amount of testing that a product already has will determine what testing the TE is focused on. We work creating a test roadmap that parallels the product’s development cycle and addresses any testing gaps.

If you still want to know what the day in the life of a Test Engineer entails, we’ll never be able to give you a general answer for that. Instead I suggest that you check out what Alan Faulkner is doing or ask the next Google Test Engineer you meet.

Interested in joining the ranks of Test Engineers (or Software Engineers in Test)? Check out http://goo.gl/2RDKj

About the Contributors:
Albert Drona has been at Google for 5 years and is currently working on Google Maps for Mobile.
Jatin Shah has been at Google for 9 months on Google+.
Mohammad Khan has been at Google for 7 years and is currently working on Google+ releases.
About the Author:
Yvette Nameth has been at Google for 5 years and is currently working on Google Maps rendering.


14 comments:

  1. Hi Anthony,
    Thanks for this nice writing. I have couple of questions here.
    1. As far as i know there is a huge difference between Test Engineers and Software Engineers in Test.
    Q. For which role this article is applicable.

    2Q. Which language test engineers has to code in.

    ReplyDelete
    Replies
    1. Even I do Agree.So basically top coders will be placed here.mostly the test engineers have a different skill set than Software Engineers in Test. Looks like google is looking for coders.

      Skill set Ref is taken from the site...<a href="http://www.askqtp.com/>AskQTP</a>

      Delete
    2. @hanuman:

      1) Yes, within Google we have two different roles in the test category: Software Engineer in Test (SET) and Test Engineer (TE). This article is written regarding the role of the Test Engineer.

      I didn't mention any of the general traits of an SET since I was trying to highlight what makes up a Google Test Engineer. I find that SETs and TEs have some overlap, but there is quite a big difference in the jobs as well since the roles are meant to be complementary and ideally TEs and SETs would work together to create a supremely awesome test environment.

      2) Test Engineers need to code in a wide variety of languages; I can't pinpoint just one or two. The differences above highlight "The Type of Product" and how that impacts the technologies we use. Part of this is the languages that we tool in or add test cases in.

      I personally have written in the following languages over my time at Google: Java, C++, Python, Javascript and Eggplant. I didn't do all of these for a single product though. I've worked in both Ads and Maps so when the product I was working with required me to change tools/languages, I did. I bet I could find a TE at Google who's coded in only a single language, or one who's used even more than I have.

      Delete
  2. why does not have the test engineer in China?

    ReplyDelete
  3. Hi Liang, I am a TE at Google's Beijing, China office. Google hired TEs in the first two years when Google began to set up the Beijing office in China. Google may not be hiring TEs in China right now, but you should check the job site periodically.

    In the Beijing office, there is little difference between TE and SET. You will be assigned to a project based on your skills, your interests, and the project's requirements (eg. project priority). Both TEs and SETs manage the test/release process, write test cases, write automation scripts, and implement test tools which can accelerate the test/development/release process.

    ReplyDelete
    Replies
    1. Hi Xiazhang(or Xia?), Thanks! I am based on Shanghai. I am interested in how google test engineer works. Do you write testing tools by yourselves? And do you focus on black box testing or white box testing?

      Delete
  4. How does the salary of a TE compare to that of an SET or SWE?

    Are TE's considered to be less technical than SET's or SWE's?

    ReplyDelete
  5. @JMonty42: Compensation at Google is a function of multiple factors. Without going into specific details, it's safe to say that comp is a function of geography, prior experience, tenure in role, and most importantly impact. The coding bar at Google does differ between TE and SET, however we do see blending across roles when it comes to coding capability.

    ReplyDelete
  6. Can an experienced test engineer who knows the product very well move on to being a software engineer?

    ReplyDelete
  7. I appreciate the effort of putting this nicely with appropiate details.

    I can very well relate to it that describing the job of a test engineer is difficult at times. I feel lucky to work with some of the great folks in indurty and companies like Adobe, which provided the similar culture.

    Thanks Again ! I am inspired to blog about similar stuff soon.

    ReplyDelete
  8. I just wanted to add that there is a common mindset out there held by many that the "rite of passage" for a test engineer is to transition into a software engineer. I actually was a software engineer for 5 years before making the transition to a test engineer and have never regretted it. I think I like the test engineer role because on most teams I've been part of, I've felt more like a full stack developer in the sense that I get to work with everything from HTML/Javascript to the Backend and even DB. Most of the software engineers I work with are isolated to one language and often just one focus area of the app. I found that rather boring. Wearing multiple hats is much more interesting to me.

    ReplyDelete
  9. Hi,
    Nice one! You have kept in a well versed manner about the role of a tester, Not only in Google but anywhere testers need to foresee the situations the application or product will be and test accordingly. Anyway working for Google will provide vast options to explore..

    ReplyDelete
  10. Does Google have a 'Systems Integration Test Engineer' position (or something like it?)

    ReplyDelete
  11. Hi there,
    I looked at the google jobs but I couldn't find even a single job for a Test Engineer. All of them were for Software Engineer in Test or Test Lead. Please can anyone help me with these questions:

    1. What is the skill set required for Test Engineer role? How different it is from Software Engineer in Test?
    2. How to prepare for a Test Engineer job interview?
    3. What is the career path for a Test Engineer and Software Engineer in Test working for Google?

    Thanks in advance.

    Regards,
    Vikas

    ReplyDelete

The comments you read and contribute here belong only to the person who posted them. We reserve the right to remove off-topic comments.