How QA Testers are Discovering Performance Testing
For years I’ve been hearing about how QA Testers and QA engineering careers, in general, 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.
Confusion Over the Agile QA Testers 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.
PerfGuild Online Conference takes on education
As a matter of fact, this is the reason why I decided to create the PerfGuild an online conference dedicated 100% to performance testing. One of our goals is to help beginners discover how to create performance testing awesomeness.
We have an awesome speaker line-up that will include hands-on sessions as well as discussions on how to educate more engineers about the craft of performance testing.
Eric Proegler a performance testing expert and past guest on test talks 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.
Todd DeCapua one of the PerfGuild speakers and author of the O’Reilly book titled Effective Performance Engineering will have a session that explains in part 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.
QA Testers as Performance Testing Advocates
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 users 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. He pointed me to another event he took part in called the Performance Engineering Summit and 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)
Performance Testing Resources
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.
Of course, many of these topics will also be covered in this years Perfguild online conference.
Rebecca Clinard, a performance engineer at Blazemeter, founder of PerformanceWisdom (she’s also a speaker at this years PerfGuild conference) 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 testing 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. I think many existing QA testers could easily make a transition to a full-time performance engineer. Even for those that testers that don’t have the skills (or desire) to become actual, full-time performance testers.
Even for those that testers that don’t have the skills (or desire) to become actual, full-time performance testers, I think their unique skills and temperament 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.
In the customer-centric world of development, that translates into one of the most important skills someone can have.
Interested in learning more about Performance Testing
Join us for the first ever online conference dedicated 100% to performance testing — PerfGuild. Taking place July 31 – Aug 2.