The Role of a Software Tester in the Modern Agile World
Written by Jéhan Coetzee
The role of a software tester in the modern Agile world is evolving, shaped by the principles of agility, collaboration, and continuous delivery. The traditional boundaries between development, testing, and business roles have blurred, raising essential questions:
While the structure has changed, the value that a skilled software tester brings remains significant, and arguably, even more critical in today’s Agile setups.
Tester vs. Testing
In modern Agile environments, there is an important distinction between "tester" and "testing." As quality becomes a shared responsibility across the team, testing must move beyond simply "checking" for defects. Instead, it should be embedded into every level of the process. Testing ensures that software meets user expectations, identifies potential defects, and validates the product. The real question isn’t whether testing should occur—it must—the real question is, who should be responsible, and how should it be approached?
Historically, testers worked independently of developers, each focusing on their specific role. Developers wrote the code, and testers validated functionality, ensuring quality. However, Agile has shifted towards a model where every team member contributes to quality assurance, leading to a more collaborative approach. The tester’s role has evolved into that of a "quality advocate" rather than someone who solely "owns quality." This transition marks the shift from isolated testers to embedded quality coaches guiding the team.
Although testing can be done by anyone, the presence of a dedicated tester brings a unique and indispensable perspective. A skilled tester doesn't just identify bugs; they focus on risk, edge cases, and the holistic impact of the product on users.
Bugs are not simply technical flaws; they are often tied to how well the product meets the needs and desires of its users. A bug for one stakeholder might not be a problem for another, which is why testers, with their broad perspective, are key in assessing the product’s alignment with business goals. As James Bach wisely observed, “Bugs are not ‘in’ the product. Bugs are about the relationship between the product and the people who desire something from it.” Testers work to understand this relationship, ensuring the product meets user needs and business goals.?
Can Developers Play the Role of a Tester?
In Agile, the notion that developers should test their own code has gained traction. Continuous integration, automated testing frameworks, and a shift towards shared responsibility for quality have allowed developers to handle more of their own testing, including writing and running unit tests. In this sense, developers can and should contribute to testing. They are responsible for ensuring their code meets a certain level of quality before it proceeds to the next phase.
However, there is an inherent bias when developers test their own work. Their intimate involvement in creating the software can lead to an overly optimistic view of how it performs. Developers tend to focus on the "happy paths," whereas testers excel at exploring edge cases, challenging assumptions, and investigating less predictable scenarios.
Even rotating developers into testing roles each sprint doesn’t fully address the issue. Developers naturally approach testing from a technical perspective—focusing on how the code works—rather than considering the broader business needs or user experience. Testers, on the other hand, ask critical questions: What happens when users behave unpredictably? Does the feature align with the business’s strategic goals? This form of critical thinking adds immense value.
Testing is not just about ensuring code works; it’s about exploring the product from various angles to ensure it solves the right problems.
As Bach highlights, even with rigorous automated checks, "no algorithm can guarantee we find all the important bugs" because bugs are often socially constructed based on user interaction with the product. Therefore, testers play a vital role in addressing unpredictable issues and edge cases that go beyond scripted tests. While automation and algorithms can detect certain predictable issues, they cannot uncover all potential problems. No tool or script can anticipate every possible issue, which is why testers must engage in exploratory testing to truly understand the product's strengths and weaknesses. This human judgment is what sets testers apart from automation.
领英推荐
Should the Product Owner Do Functional Checks?
In Agile teams, product owners are responsible for ensuring that the software meets user requirements and business objectives. They are critical in acceptance testing, where they confirm the functionality from a user’s perspective. However, relying solely on the product owner for functional checks introduces risk. The product owner may not have the technical expertise or time to conduct thorough functional testing, and their role is inherently limited to understanding business needs rather than exploring all potential risks within the software.
This is where the tester's role evolves into a coach or mentor. Testers complement the product owner’s checks, guiding them through potential technical pitfalls and ensuring that user expectations are met under varied conditions. While product owners bring their knowledge of business requirements, testers provide a unique lens, probing deeper into the system's behaviours to catch issues the product owner may miss.
Testers approach the software with curiosity and scepticism, actively looking for weaknesses that others might overlook. Their presence helps ensure that the product is not only aligned with business objectives but also robust, reliable, and user-friendly.
The Role of Credibility in Testing
Testing is not just about running tests and identifying issues; it is also about building trust within the team. A tester’s credibility is crucial in ensuring that the team has confidence in the testing process. Testing is a performance where the tester must not only find issues but build confidence in their ability to uncover important problems. Through their questioning of the product and their detailed understanding of both the technical and business aspects, testers become trusted advocates for quality. This credibility is earned through thorough investigation, probing deeper than just the surface, and effectively communicating risks to the team. A tester’s reputation within the team grows with each interaction, and strong credibility reinforces the value of rigorous, thoughtful testing.
The Value of Specialisation in Testing
In modern Agile teams, testing is often considered a shared responsibility, with developers and other team members contributing to the process. However, this doesn't negate the need for specialised testers. Testing requires a unique blend of skills and perspectives that not everyone naturally possesses, and a generalist approach may not always suffice.
Testing skills cover a wide range. Some are common to most people—such as analytical thinking and problem-solving—while others come through formal education or training. Certain skills are specific to particular technologies, while others are intrinsic to testing itself. People begin developing basic testing instincts from an early age through observation, play, and exploration. Despite this, finding structured, comprehensive training in testing can be difficult within the industry.
One of the challenges in advocating for testers is that the profession lacks a centralised authority that defines a standard set of skills or knowledge. Testing has no universally recognised framework, making it difficult to ensure a consistent level of expertise across the field. Certification programs exist but are often criticised for focusing on theoretical knowledge without truly evaluating practical, real-world testing ability. As a result, it’s not uncommon for individuals to obtain certification without having significant hands-on experience.
This variability leads to testers having different levels of expertise, conditioned by the specific tools, projects, and environments they’ve worked in. Much of the skill involved in testing—such as critical thinking, collaboration, and an understanding of complex systems—cannot be easily codified or taught through formal education. These skills are often developed through experience and real-world problem-solving, making each tester’s skill set highly individualised.
Because of this, advocating for testers can sometimes be challenging. If testers are not equipped with the right combination of skills, or if their value isn’t well understood by the team, it may seem that testing can be done by anyone. But, like any specialised discipline, effective testing requires individuals with the right expertise. Generalising testing responsibilities across a team may work for basic tasks, but deeper insights into the product, potential risks, and user experience require a dedicated tester with specialised skills.
The solution is not to diminish the role of testers but to invest in cultivating and recognising the specific skills that make testing effective. Teams should seek out testers who not only understand the technical aspects of their work but who also possess the critical and business-focused thinking needed to ensure software meets user needs and business goals. By nurturing these specialised skills, organisations can ensure that testers remain an integral part of the team and contribute significantly to the product's overall success.
Conclusion
While developers can and should take responsibility for testing their code, and product owners should be involved in functional checks, a dedicated tester brings a unique skill set and perspective that enhances the overall quality of the product. Testers do more than find bugs; they advocate for quality, identify risks, and ensure that the software aligns with the needs of the business and its users.
In the modern Agile world, the role of the tester has not diminished; it has evolved to become even more integral to the success of the team. Testers don’t need to become more technical to add value. Their true worth lies in understanding the business needs, anticipating user behaviour, and ensuring the product delivers real value. Testing is about more than just code; it’s about thinking critically and ensuring the software fulfils its purpose in the real world.
Frontend Developer | Vue : Typescript, Selenium : Python | Neurodivergent
1 个月Well said. Thanks Jehan Coetzee your works are helping me build a strong foundation in Testing.
SIT Test Analyst
2 个月Good article and a good refresher on software tester role in the agile team
Senior QA Specialist | Test Proces, Maturity & Automation | Quality nut-job | Unity enthousiast
2 个月great article on how the hands on tester/testing shifted towards quality advocates and how it challenges the 'testing' paradigm.