The Role of Testers on Agile Teams
I consider myself a software engineer, but early in my career I worked for a small startup where I was responsible for every part of the delivery process that did not include software development, including testing. Working with users of the product drove home the importance of testing and influenced my approach to software development.
It’s hard to find someone who would argue that testing and quality are not important. Where people tend to get into trouble is when they conflate testing and test automation. This is a particularly tricky issue for some agile teams.
As James Bach explains, software development didn’t start with a separate profession of tester. As the tester role became established, according to Bach, the difference between test automation and the broader concept of testing got muddled, and we seem to be struggling with this confusion—to the detriment of software quality.
While quality engineering and automated testing each have a long history, awareness of agile software development methods, in particular Extreme Programming,has made teams reconsider the role of developers in automated testing. Automated testing is an essential part of having agile code, which makes agile software development possible.
But not everything can be automated, and some teams relegate any manual testing to testers. This is a bad idea for a few reasons. It creates an environment where the team can defer responsibility for some aspects of quality. It can create bottlenecks in the development pipelines, as there are often fewer testers than developers. It also limits the time that a tester can spend using their testing skills and knowledge.
Some teams have so fully embraced the idea of the development team owning quality that they opt to not hire people with a testing background, instead making software engineers responsible for all phases of quality. On these teams, everyone (except for the ScrumMaster and product owner) is a developer. Quality engineering is a skill that all members of the development team can benefit from.
Still, testers add value to a team in many ways that don’t involve test execution. Testing on an agile team is about risk, and testers can work with the team to understand how best to allocate testing efforts for specific stories. A tester can also work with product owners to test requirements. And like all development team members, a tester can help execute manual tests and data-driven tests that have fixtures.
Using testers well can empower a team. Using them the wrong way can create environments that reinforce bad habits.
The role of quality engineering on software teams has changed over time from a mainly manual approach with a heavy emphasis on documented procedures to a process that favors automation. Who does testing has also changed, from the person writing the code to a team of dedicated testers to a whole-team approach, where developers write tests. The challenge is to think more about what testing is, who does it, and where it starts in the process.