How Google Tests Software - Part Seven
Thursday, May 26, 2011
By James Whittaker
The Life of a TE
The Test Engineer is a newer role within Google than either SWEs or SETs. As such, it is a role still in the process of being defined. The current generation of Google TEs are blazing a trail which will guide the next generation of new hires for this role. It is the process that is emerging as the best within Google that we present here.
Not all products require the services of a TE. Experimental efforts and early stage products without a well-defined mission or user story are certainly projects that won’t get a lot of TE attention. If the product stands a good chance of being cancelled (in the sense that as a proof of concept it fails to pass muster) or has yet to engage users or have a well defined set of features, testing it is largely something that should be done by the people developing it.
Even if it is clear that a product is going to get shipped, Test Engineers have little to do early in the development cycle when features are still in flux and the final feature list and scope is undetermined. Overinvesting in testing too early can mean a lot of things get thrown away. Likewise, early testing planning requires fewer test engineers than later cycle exploratory testing when the product is close to final form and the hunt for missed bugs has a greater urgency.
The trick in staffing a project with Test Engineers has to do with risk and return on investment. Risk to the customer and to the enterprise means more testing effort and requires more TEs. But that effort needs to be in proportion to the potential return. We need the right number of TEs and we need them to engage at the right time and with the right impact.
Once engaged, TEs do not have to start from scratch. There is a great deal of test engineering and quality-oriented work performed by SWEs and SETs which is the starting point for additional TE work. The initial engagement of the TE is to decide things such as:
· Where are the weak points in the software?
· What are the security, privacy, performance and reliability concerns?
· Do all the primary user scenarios work as expected? For all international audiences?
· Does the product interoperate with other products (hardware and software)?
· In the event of a problem, how good are the diagnostics?
All of this combines to speak to the risk profile of releasing the software in question. TEs don’t necessarily do all of this work, but they ensure that it gets done and they leverage the work of others is assessing where additional work is required. Ultimately, test engineers are paid to protect users and the business from bad design, confusing UX, functional bugs, security and privacy issues and so forth. At Google, TEs are the only people on a team whose full-time job is to look at the product or service holistically for weak points. As such, the life of a Test Engineer is much less prescriptive and formalized than that of an SET. TE’s are asked to help on projects in all stages of readiness: everything from the idea stage to version 8, or even watching over a deprecated or “mothballed” project. Often, a single TE will even span multiple projects particularly those with specialty type skills like security.
Obviously, the work of a TE varies greatly depending on the project. Some TE’s spend much of their time programming, much like an SET, but with more of a focus on end-to-end user scenarios. Other TE's take existing code and designs determine failure modes and look for errors that will cause those failures. In such a role a TE might modify code but not create it from scratch. TE's must be more systematic and thorough in their test planning and completeness with a focus on the actual usage and system experience. TE's excel at dealing with ambiguity in requirements and at reasoning and communicating about fuzzy problems.
Successful TEs accomplish all this while navigating the sensitivities and sometimes strong personalities of the development and product team members. When weak points are found, test engineers happily break the software, and drive to get these issues resolved with the SWEs, PMs, and SETs.
Such a job description is a frightening prospect given the mix of technical skill, leadership, and deep product understanding and without proper guidance it is a role in which many would expect to fail. But at Google a strong community of test engineers has emerged to counter this. Of all job functions, the TE role is perhaps the best peer supported role in the company and the insight and leadership required to perform it successfully means that many of the top test managers in the company come from the TE ranks.
There is a fluidity to the work of a Google Test Engineer that belies any prescriptive process for engagement. TE’s can enter a project at any point and must assess the state of the project, code, design, and users quickly and decide what to focus on first. If the project is just getting started, test planning is often the first order of business. Sometimes TEs are pulled in late in the cycle to evaluate whether a project is ready for ship or if there are any major issues before an early ‘beta’ goes out. If they are brought into a newly acquired application or one in which they have little prior experience, they will often start doing some exploratory testing with little to no planning. Sometimes projects haven’t been released for quite a while and just need some touchups/security fixes, or UX updates—calling for an even different approach. One size rarely fits all for TEs at Google.
The Life of a TE
The Test Engineer is a newer role within Google than either SWEs or SETs. As such, it is a role still in the process of being defined. The current generation of Google TEs are blazing a trail which will guide the next generation of new hires for this role. It is the process that is emerging as the best within Google that we present here.
Not all products require the services of a TE. Experimental efforts and early stage products without a well-defined mission or user story are certainly projects that won’t get a lot of TE attention. If the product stands a good chance of being cancelled (in the sense that as a proof of concept it fails to pass muster) or has yet to engage users or have a well defined set of features, testing it is largely something that should be done by the people developing it.
Even if it is clear that a product is going to get shipped, Test Engineers have little to do early in the development cycle when features are still in flux and the final feature list and scope is undetermined. Overinvesting in testing too early can mean a lot of things get thrown away. Likewise, early testing planning requires fewer test engineers than later cycle exploratory testing when the product is close to final form and the hunt for missed bugs has a greater urgency.
The trick in staffing a project with Test Engineers has to do with risk and return on investment. Risk to the customer and to the enterprise means more testing effort and requires more TEs. But that effort needs to be in proportion to the potential return. We need the right number of TEs and we need them to engage at the right time and with the right impact.
Once engaged, TEs do not have to start from scratch. There is a great deal of test engineering and quality-oriented work performed by SWEs and SETs which is the starting point for additional TE work. The initial engagement of the TE is to decide things such as:
· Where are the weak points in the software?
· What are the security, privacy, performance and reliability concerns?
· Do all the primary user scenarios work as expected? For all international audiences?
· Does the product interoperate with other products (hardware and software)?
· In the event of a problem, how good are the diagnostics?
All of this combines to speak to the risk profile of releasing the software in question. TEs don’t necessarily do all of this work, but they ensure that it gets done and they leverage the work of others is assessing where additional work is required. Ultimately, test engineers are paid to protect users and the business from bad design, confusing UX, functional bugs, security and privacy issues and so forth. At Google, TEs are the only people on a team whose full-time job is to look at the product or service holistically for weak points. As such, the life of a Test Engineer is much less prescriptive and formalized than that of an SET. TE’s are asked to help on projects in all stages of readiness: everything from the idea stage to version 8, or even watching over a deprecated or “mothballed” project. Often, a single TE will even span multiple projects particularly those with specialty type skills like security.
Obviously, the work of a TE varies greatly depending on the project. Some TE’s spend much of their time programming, much like an SET, but with more of a focus on end-to-end user scenarios. Other TE's take existing code and designs determine failure modes and look for errors that will cause those failures. In such a role a TE might modify code but not create it from scratch. TE's must be more systematic and thorough in their test planning and completeness with a focus on the actual usage and system experience. TE's excel at dealing with ambiguity in requirements and at reasoning and communicating about fuzzy problems.
Successful TEs accomplish all this while navigating the sensitivities and sometimes strong personalities of the development and product team members. When weak points are found, test engineers happily break the software, and drive to get these issues resolved with the SWEs, PMs, and SETs.
Such a job description is a frightening prospect given the mix of technical skill, leadership, and deep product understanding and without proper guidance it is a role in which many would expect to fail. But at Google a strong community of test engineers has emerged to counter this. Of all job functions, the TE role is perhaps the best peer supported role in the company and the insight and leadership required to perform it successfully means that many of the top test managers in the company come from the TE ranks.
There is a fluidity to the work of a Google Test Engineer that belies any prescriptive process for engagement. TE’s can enter a project at any point and must assess the state of the project, code, design, and users quickly and decide what to focus on first. If the project is just getting started, test planning is often the first order of business. Sometimes TEs are pulled in late in the cycle to evaluate whether a project is ready for ship or if there are any major issues before an early ‘beta’ goes out. If they are brought into a newly acquired application or one in which they have little prior experience, they will often start doing some exploratory testing with little to no planning. Sometimes projects haven’t been released for quite a while and just need some touchups/security fixes, or UX updates—calling for an even different approach. One size rarely fits all for TEs at Google.
That's a nice piece of information and guidance for the TE, helping TE to examine his much needed skills and to incorporate if missing some.
ReplyDeleteon the similar lines there could be 'DE' development engineers.
ReplyDeleteHi James,
ReplyDeleteThanks for sharing information about how the TEs add value to Google products. This is the post I have been waiting since you started this series about how Google tests software.
I am trying to build a team of software quality assurance people and the skills set of a Google's TE is what I am looking for in the people I hire. However, at least here in Brazil, this is something REALLY hard to find. The market is full of "classic style" testers though.(By classic style tester I meant people who are more comfortable with writing and manually running long test scripts, that will be out of date as soon as the product is released).
Does Google also face any kind of issue when hiring TEs? Any hints for me?
Thanks again!
Great post James!
ReplyDeleteDoes this mean that TEs change projects more usually than SETs? [since they should go through different projects at later parts of the development lifecycle] this seems a better title for an SDET more focused on E2E testing.
Keep the posts comming!
Love your post! I'm surprised to see "many of the top test managers in the company come from the TE ranks". I thought Google's management were dominated by developers.
ReplyDelete@Weining: At Google, testers report to testers, not to developers.
ReplyDelete@Bruno: I don't have any data on job changes by title but my suspicion is that it is *easier* for TEs to change projects because they serve the users and not the code base.
Great and very informative post, James. I also have got your book on Exploratory Testing and enjoyed it. It must be cool to work with folks like you and learn at the feet of the masters, so to speak.
ReplyDeleteNice read. I always have leaned towards/pitched for getting folks like TE's involved earlier as then they have higher chances of influencing functionality or feature set, and taking a swipe at the broader big picture problems - like interop with other products. (I would imagine that would lie outside the charter of SWT's?) If they come in later when a large part of the spec and usability has been baked in, aren't we really limiting their chances of success and if there is any impact unearthed by them, further risking release schedule?
ReplyDeleteThoughts?
Regardless, Loved how you laid down the fluidity of the role of a TE and the leadership aspect! It is something very fundamental for a good TE to stand up and effect change where needed! TE's who are customer advocates are priceless!
Hey James,
ReplyDeleteAwaiting your post on SETs - the continuation of part 6.
Thanks,
Raghav.
Thank you for your always great posts.
ReplyDeleteGenerally the test engineers with extensive experience and broad perspective like TEs
leave the test execution, and dedicated themselves to the test management.
But such a career path, in some cases, narrow their perspective and dull their intuition.
It seems that TEs activities include leading to a better place products and services.
These activities may strongly dependent on individual ability and experience.
For global products and services, It may be necessary to support to their activities by some systems.
I am pleased to read that the Google Test Engineering department is once again appreciating the value of having Test Engineers on their projects. As one of the original group of Test Engineers at Google, I understand the value that a great exploratory tester with creativity, curiosity and good communication skills can add to the success of a project's deployment. You can run automation all day long and of course you will find issues and bugs in the code, but it takes a person to find those edge cases or issues that the actual end user might find. Ultimately we want the user to be happy and not frustrated with the product. Having a Test Engineer give it a once-over, based on extensive knowledge of testing techniques and how to exercise the code in ways that the developer never intended, is the best way to assure the success of the product for Google or any other company.
ReplyDeleteThank you for the "tutorial", it was very useful :)
ReplyDeleteThanks for the update.
ReplyDeleteI am so happy to hear that google has introduced the TE role.
Please post the information on eligible criteria to apply for the TE position in google.
I am working as TE in a software firm.
Amazing article, it seems that here at Directi, India we also believe in more or less similar strategy. The TE's involve in later phases and analyse the break-points before shipment of a product.
ReplyDeleteHi, James!
ReplyDeleteWhat I wonder is that you refer to Exploratory testing with "exploratory testing with little to no planning". This confuses me as in exploratory approach the testing IS planned, but made less rigid and more reactive. Do you have exploratory experts as TEs? Do all TEs do exploratory testing? Do they do it RIGHT (according to your specification of Exploratory testing something is wrong)? But nonetheless fachinating to see the aspects of TE's jobs you have at Google. We are doing the same role clarification in our company so this is very enlightning.
BR, Pekka
Thanks James for sharing the series. One question - how do you generally plan the swe:set:te ratio when forming a team? Is there some thumb rule?
ReplyDelete