Never say die: How QA engineers can become performance testers
Good QA engineers never die—they just expand their roles.
For years I’ve been hearing about how QA engineer careers are dying and being replaced by jack-of-all-trade developers working in harmony in shiny new software methodologies such as agile and DevOps.
Of course, like most predictions, this one seems to boast more hyperbole than substance. Although, as more and more teams shift left in their software development process, the role of QA has definitely changed, I don’t believe it can ever be completely eliminated.
The confusion over the agile tester role
The confusion is caused by folks not knowing where a QA resource fits into an agile environment. So how can someone who is an excellent QA resource thrive in this modern development landscape?
If you are a QA manual tester, you can’t hide from the fact that the world has changed. No longer is it enough to just be involved in a waterfall, siloed-type view of quality. With your skill set, it is vital that you expand your influence, not reduce it. One area that seems like an excellent fit for a QA-minded engineer is performance testing, as he or she could undoubtedly help drive many of its activities.
Performance Engineering Summit takes on education
As a matter of fact, a group of performance engineers recently got together at a gathering called the Performance Engineering Summit to discuss how to educate more engineers about the craft of performance testing.
Eric Proegler, one of the 13 participants in the summit, explained that in performance-testing work we often talk about “tool jockeys”: people who can do scripting but don't understand what it means or can't put it in the context of something the business can make a decision on.
This is where a person with a QA background can really make a difference by taking that data and turning it into something that has an effect on what the business does.
Agile performance testing: Start early
Just as with TDD and BDD, it is recommended to start performance testing as early as possible. It’s much harder to change an application’s architecture once your software has been developed, so you want to make sure it’s done before you start any kind of performance analysis.
Scott Moore, another well-known performance engineer, believes one way to do this is to start when the technical specs are being written, essentially baking performance criteria into your design from the start. You can also use performance testing to help shake out the different types of technologies you are deciding between.
If you’re a QA engineer who works in an agile shop, you could start expanding your influence by ensuring that anyone putting a user story down on a Post-it note or in a tool such as Rally also includes a performance requirement on it.
A QA engineer can also act as a user advocate by making sure the performance scenarios are testing the right things. There’s nothing worse than a fool with a tool just hammering an application with an unrealistic performance test and causing all kinds of havoc.
Most QA testers have a holistic view of the whole application their team is developing, giving them unique insight into how it all fits together. With that knowledge, they can assist their performance engineers in ensuring that the performance testing scenarios they’re developing focus on the key business and money-making functionality in their application (or the ones they know their uses will be using most often).
This will only become more critical as we move faster and faster with continuous delivery.
In my experience as a performance test engineer, I’ve found the actual creation of the test script to be the easiest part of the job. The difficulty comes when having to analyze and make sense of the reams of performance data that are gathered during a test. This is another area in which a QA engineer could contribute by taking all that data and creating reports that actually explain to management how all the numbers will have an impact on their end users.
The skills you'll need to get started with performance testing
So how can someone make the transition from being a manual QA tester to also being able to contribute to his or her team’s performance-testing efforts?
Burt Klein, a DevOps strategist at Tech Mahindra, thinks that this discipline needs someone who is not what he calls a pass/fail-trained resource. Outside-the-box thinking is a foundational skill set necessary for this job function.
Proegler was a functional defector himself. One of the work products of the summit was a list of the skills an entry-level performance engineer needs, and Proegler feels the items on that list are obtainable for a motivated functional tester:
- Setting architecture, level 1 (drawing system design)
- Managing measurements/metrics
- Reducing bottlenecks
- Accommodating network bandwidth and application throughput
- Understanding resource saturation/operating range (memory paging/caching)
- Completing test design
- Doing basic environment management (patching, shared resource/services)
- Distinguishing between test environments and production (containers/cloud options, configuration, virtualization)
- Interpreting test data
- Modeling and identifying transactions/workload
- Fulfilling transactions/TPS
- Checking flows
- Analyzing log files
- Handling scripting/parameterization/dynamic content
- Comprehending error and success rates
- Understanding validations and why they are necessary
- Reading results/interpreting graphs/operating graphing tools
- Allowing for think time and pacing
- Managing concurrency and scheduling
- Explaining queues (Little’s Law)
A great resource that explains many of these topics in an easy-to-understand, humorous style that can be understood by anyone who is interested in performance testing is the Every Computer Performance Book.
Rebecca Clinard, a performance lead at Applause and founder of PerformanceWisdom (she’s also a contributor to the Performance Engineering Summit) feels that, typically, functional QA testers are intimately familiar with the application's business transactions, which is a good start to creating an automated load test. With this skill, a tester can help guide a performance engineer to create realistic performance tests.
So, a QA functional tester could start getting more involved with performance by learning to configure those load scripts to behave like human beings; in other words, creating a realistic load and throughput.
Can a QA tester completely transition to performance?
A growing number of jobs are listed for folks with performance-testing experience. The more skills you have, the better off you’ll be, but if I’m being honest, I don’t believe the majority of QA testers have the skills (or desire) to become actual, full-time performance testers.
Their unique skills and temperament, however, make them perfect performance advocates for your application end users. In the customer-centric world of development, that translates into one of the most important skills someone can have.