Blurring the lines: How the development tester role changes on agile teams
In agile development, the specializations of each team member are the glue that binds the team together. While these specialized roles and responsibilities complement one another, the historical boundaries between design, development, and testing are blurring. Development testers in an agile environment play a much wider role than traditional QA professionals do. They have more responsibility, with far more varied tasks, and are rewarded with richer opportunities to advance and take part in more diverse assignments.
For development testers, there's no typical workday. At any given time, they may be engaged in different phases of the software development process and interacting with customers. For example, imagine an agile team that is in the midst of developing a monitoring service for a large data repository that includes a dashboard interface. The team is already in its third release and has been working on the project for several months when the customer asks for a new feature: the ability to monitor a specific type of anomaly in the repository.
Discovering the feature
The stakeholders for the new feature include the product owner, a system architect, a developer, and a development tester. In order to lay out the feature's technical requirements, each stakeholder shares what he or she thinks it means to develop the new feature. Development testers, in particular, must have a firm grasp on the technical aspects of the feature, such as how it will interact with the rest of the product and how it may affect overall performance and security.
The development tester must fully understand how to calculate the anomaly and how the code should use the calculation. This knowledge is required for both manual testing and for preparing automated tests.
Let's assume that the anomaly-detection feature has been included in the current sprint. While the developers start implementing it, the development tester prepares the manual test cases and automation infrastructure. Manual testing can start once the developer has created an initial, partial delivery of the new feature, but the user story must be manually tested before automation comes into the picture. The development tester can't automate any tests that weren't already performed manually, and they must determine whether the feature is stable before turning to automated testing.
While the anomaly-detection feature is under development, it's only possible to automate testing at a basic level. When development is complete, however, API testing can be automated, along with client-side testing, negative testing, security testing, and performance testing. These tests get incorporated into the daily automation package that tests old and new features alike.
Not all bugs are created equal. A design bug is a characteristic of the feature that doesn't correspond to what the end user actually needs. For example, the anomaly calculation might be performed every 10 seconds, but the customer actually needs it to run every five seconds. As soon as the customer feedback arrives, the development tester should set up a meeting with the product owner and the developer to discuss the issue.
A feature has a functional defect when something isn't working properly. The development tester who discovered the bug is responsible for deciding whether it's critical and must be corrected before release, or whether it's only cosmetic and not worth holding up the software release. The development tester's understanding of the customer's needs drives this decision. For example, a noncritical defect in the anomaly-detection feature might be the use of a blue font instead of a black one. A critical defect, on the other hand, might be a miscalculation of the anomaly, resulting in the delivery of incorrect information to the user.
Meeting the customer
In an agile team, development testers meet customers to listen to their experiences and gain a deeper understanding of what features they would like to see in the product. The product is like a huge jigsaw puzzle, and the development testers are often the ones who have the first glimpse of the fully assembled product.
This end-to-end view enables the development tester to assist other teams that have customers who might find this feature useful. Development testers may also invite potential customers to participate in controlled tests, similar to focus groups, where they agree to use the new feature before its official release. By teaming up with potential customers, development testers obtain feedback they can use to perfect features and enhance quality.
Characteristics of a great development tester
Development testers must have technical skills similar to those of a developer and be capable of observing a product from a broad perspective that encompasses many details. After all, development testers code tests and automation in the same programming languages, code repositories, and continuous integration and delivery pipeline as developers.
Development testers interact with other team members, absorb the atmosphere, and can be outspoken. They must be independent, responsible, and willing to reach out to other team members and customers. As such, the training process is elaborate. They must learn how to program and understand the design of a product while becoming familiar with testing methodologies and customer-facing activities.
Traditionally, the tester puts together a test specification document during the development phase and starts testing once the developers have finished developing the features. In an agile environment, the development tester is involved much earlier in the process, starting with discussions with the customer about what they expect to be delivered.
As a tester in a traditional environment, you're part of a team focused on testing and verifying features. In an agile environment, you're part of a multidisciplinary agile team with a shared goal to deliver value to the customer. Agile testers focus on overall testability of the system, identify opportunities for automation, and implement test automation at all levels of the system, from the components and services, all the way through to the presentation layer. You use the same tools, technologies, and techniques as your developers. Additionally, you work with the developers during each sprint, and you provide continuous feedback to the team about the quality of the user stories under development. With a solid understanding of the agile tester's role, you should be well equipped to succeed in an agile team.