Test engineers (TEs) at Google are a dedicated group of engineers who use proven
testing practices to foster excellence in our products. We orchestrate the rapid
testing and releasing of products and features our users rely on. Achieving this
velocity requires creative and diverse engineering skills that allow us to
advocate for our users. By building testable user journeys into the process, we
ensure reliable products. TEs are also the glue that bring together feature
stakeholders (product managers, development teams, UX designers, release
engineers, beta testers, end users, etc.) to confirm successful product
launches. Essentially, every day we ask ourselves, “How can we make our software
development process more efficient to deliver products that make our users
happy?”.

The TE role grew out of the desire to make Google’s early free products, like
Search, Gmail and Docs, better than similar paid products on the market at the
time. Early on in Google’s history, a small group of engineers believed that the
company’s “launch and iterate” approach to software deployment could be improved
with continuous automated testing. They took it upon themselves to promote good
testing practices to every team throughout the company, via some programs you
may have heard about: Testing
on the Toilet, the Test Certified
Program, and the Google
Test Automation Conference (GTAC). These efforts resulted in every project
taking ownership of all aspects of testing, such as code
coverage and performance
testing. Testing practices quickly became commonplace throughout the company
and engineers writing tests for their own code became the standard. Today, TEs
carry on this tradition of setting the standard of quality which all products
should achieve.

Historically, Google has sustained two separate job titles related to product
testing and test infrastructure, which has caused confusion. We often get asked
what the difference is between the two. The rebranding of the Software engineer,
tools and infrastructure (SETI) role, which now concentrates on engineering
productivity, has been addressed in a previous
blog post. What this means for test engineers at Google, is an enhanced
responsibility of being the authority on product excellence. We are expected to
uphold testing standards company-wide, both programmatically and persuasively.

Test engineer is a unique role at Google. As TEs, we define and organize our own
engineering projects, bridging gaps between engineering output and end-user
satisfaction. To give you an idea of what TEs do, here are some examples of
challenges we need to solve on any particular day:

Automate a manual verification process for product release candidates so
developers have more time to respond to potential release-blocking issues.

Design and implement an automated way to track and surface Android battery
usage to developers, so that they know immediately when a new feature will cause
users drained batteries.

Quantify if a regenerated data set used by a product, which contains a
billion entities, is better quality than the data set currently live in
production.

Write an automated test suite that validates if content presented to a user
is of an acceptable quality level based on their interests.

Read an engineering design proposal for a new feature and provide
suggestions about how and where to build in testability.

TEs do not perform manual testing. However, manual testing is used by some teams at Google. In this situation, another responsibility of TEs is to formulate and execute a plan for automating as many manual tests as possible.