by Matt Lowrie, Manjusha Parvathaneni, Benjamin Pick, and Jochen Wuttke
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.
Investigate correlated stack traces submitted by users through our feedback
tracking system, and search the code base to find the correct owner for
escalation.
Collaborate on determining the root cause of a production outage, then
pinpoint tests that need to be added to prevent similar outages in the future.
Organize a task force to advise teams across the company about best
practices when testing for accessibility.
Over the next few weeks leading up to GTAC ,
we will also post vignettes of actual TEs working on different projects at
Google, to showcase the diversity of the Google Test Engineer role. Stay tuned!
Is there still manual testing tasks which TE's do? Is there still a proportion of manual testing which takes place?
ReplyDeleteHi Steve,
DeleteTEs 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.
_Matt
Hi Matt,
DeleteWho does perform manual testing if not a TE?
Text also mentions automating a manual verification process, so who is doing the manual verification in that case?
Is this similar to roles like SDET at Microsoft?
ReplyDeleteHow you execute Exploratory testing? Obviously, it is not automate activity.
ReplyDeleteHow do you Quantify the ROI of this group work? Does Google have a PMO where these initiatives needs to be funded?
ReplyDeleteWhich team does the performance test belong to?
ReplyDelete