A key part of Agile methodology, Agile testing relies on continuous testing and feedback loop in software development. Unlike traditional software development models, where testing and development are separate processes, Agile makes testing a part of the development process. Agile teams, typically, do not have a dedicated testing or QA department. Instead, there are cross-functional teams that either have a specialist tester, or each team member is expected to take on testing responsibilities.
Principles of Agile Testing
Some of the key principles of Agile testing are:
- Continuous testing, instead of treating testing as a separate phase
- Ongoing feedback to ensure the product satisfies clients' needs
- Everyone is involved in testing, including business analysts
- Reduce feedback response time
- Keep the code simple and clean, by fixing bugs in every iteration of the development cycle
- Lessen test documentation by standardizing checklists that can be reused
Methods of Agile Testing
Just as there are different frameworks in agile methodology, such as Scrum, Kanban, and XP, there are different methods of Agile testing. Some of the most commonly used methods of Agile testing are:
Behavior Driven Development (BDD)
BDD uses scenarios to test the functionality of the software. A Given/When/Then syntax is used to build scenarios to see how the software will react in different situations to varying input parameters. Thus, by designing executable scenarios, BDD method of testing fosters better communication between developers, testers, and business analysts. BDD differs from Test Driven Development (TDD) in the sense that the latter focuses on component-wise testing, while BDD tests the functionality of the entire software.
Acceptance Test Driven Development (ATDD)
The ATDD approach to Agile testing brings together the client, the developer, and the tester. The client defines the problem, the developer finds ways to solve the problem, while the tester devises ways in which the solution could go wrong. Acceptance tests are created based on the inputs from the three key players. ATDD is useful for getting a user's perspective on software functionality, since there is direct interaction between the client and the tester.
In both, BDD and ATDD, tests are written first, and then software functionality is built to pass the tests. In exploratory testing, however, development and testing happen simultaneously. Testers interact with a working software, imagining possible use cases as they go. Thus, unlike the more methodical approach of BDD and ATDD, exploratory testing can seem chaotic.
Similar to exploratory testing, session-based testing uses time-boxed sessions to conduct tests on working software. However, unlike exploratory testing, testing sessions are thoroughly documented. This method of Agile testing uses test charters to help testers get a better sense of what areas to test in a software.