Quality assurance in Agile
Agile testing is a software testing method that is aligned with the principles of Agile software development. Nowadays, adoption is widespread due to Agile's success in delivering a more substantial, meaningful product in a short time span. Agile is not an entity, tool, framework, or a simple method; rather, it’s a collection of values, principles, and behavior built on four pillars: people and interactions, working software, customer collaboration, and responding to change. Let’s take a holistic view and understand how quality assurance (QA) is positioned in an Agile environment.
A discussion about QA in Agile raises some questions.
- Is QA part of the development team?
- Can we fit in testing in the same iteration as development?
- Because there is no certainty and the product changes with every sprint, will QA make a large hole in our pocket?
- When do we know that testing is "Done"?
Testing in Agile is not a phase but a process of continuous feedback that improves the quality of the software rather than providing a "pass/fail grade." In an Agile environment, testers are called upon to provide valuable information throughout the development cycle, as opposed to finding bugs at the end.
When testing in an Agile way, there are fewer handbooks and checklists to follow. The QA goal is simply to do whatever is necessary at a particular moment to fulfill the requirement. We already know that in Agile a diverse team works closely, irrespective of a member's role, to achieve the goal of producing a high-quality product. Dispense with the notion of separate testing teams, because testing is not about only finding problems or improving the product; it’s an exercise in verification, regulatory compliance, and/or audit trail completion. And in Agile, the role of the tester is also extended to wearing a developer’s hat.
For a successful Agile implementation, QA must be the central pillar of the development process. Agile processes sound a little scattered if done in one pass, but with gradual execution, you will notice that Agile reshuffles the order of the processes. For instance, consider designing the unit test cases before writing the code. This revised sequence will focus on developing a piece of code that fulfills the desired functionality.
So now the question is how QA can be used throughout the life cycle. For starters, a tester knows that an error doesn’t occur only at the end but throughout the process. There can be flaws in the software specification, or in its usability or code, but finding these errors is a must for every product owner. Unfortunately, their skill sets are more inclined toward other areas. We need quality engineers to do this job.
Are Agile testers losing their sheen or shining bright?
The traditional mindset considers that testing is effective if it is done independently. This oil-and-water relationship between testing and development teams created a rift between them. As a result, they can’t collaborate. However, in Agile, a tester works closely with the development team, with a focus on developing a quality shippable product at the end of every sprint.
For effective QA, the tester is involved in both design- and code-level aspects. The tester follows the investigative approach for requirement review and code walk-through, revealing bugs at a very early stage before they go too far. According to the typical mindset, QA teams are focused only on black-box testing and are not concerned with the quality of the code. As long as the code is fulfilling the requirement, a poor coding standard is not a concern. But in Agile, the highly coupled testing team can provide valuable feedback, focusing on the code during the verification and validation tasks.
Usually the testing team is considered effective if a larger number of defects are logged. This only encourages logging more cosmetic defects. But in Agile, the testing team contributes to the Done state of the product backlog, and a feature can’t be considered Done unless it passes the testing criteria. Agile proposes a highly coupled team, whereby automation can be easily implemented to improve the agility and time to market. In such scenarios, automation is not only meant for regression but for the team to introduce automation from the unit testing itself.
Agile projects are the best platform for QA to take the leadership role. None other than a QA engineer can bridge the gap between users and developers. A tester's eye can very well understand what is required, how it can be achieved, and — last but not least — how it can be assured prior to deployment. QA in Agile ensures that the whole evolving system meets business objectives and is the right fit for the purpose. Agile is gradually breaking the barrier of the traditional mindset, and testers have a key role to play.