Application teams are continuously adopting agile software techniques as the principal method of building applications. Agile methodologies, such as Scrum, Extreme Programming, Feature-Driven Development and Test-Driven Development offer the ability to iteratively develop applications. By understanding agile development processes and how testing can improve process quality, testers can define a role essential in building quality software.
Testers are best equipped to connect business needs with actual results because of their unique position in the application development lifecycle. In particular, testers are in the best position to codify user stories, and determine how to objectively measure their completion. This is a business aspect to testing that is not typically the focus in traditional methodologies. Testers often have a better understanding of user needs than developers. Likewise, testers have more technical understanding of application design than users would need. This unique position allows them to take a holistic approach during user story definition saving the entire team time and frustration.
Many misunderstandings can be avoided by early tester interventions. Testers are also in the ideal position to highlight assumptions, make them more explicit and clarify any story ambiguities before developers start coding. By enabling tester and domain expert collaboration in defining software scope, testers are in the best position to determine how to test stories once they are implemented.
Agile methodologies tend to leave acceptance criteria up to the domain expert, but that person is unlikely to be an expert in evaluating software, even against criteria he or she defined. Testers are especially qualified for that role, as it is the essence of the profession. In traditional testing, this is referred to as “acceptance testing." To facilitate acceptance testing, testers need to be involved in translating user stories into application features. Doing so enables them to understand what the user community intended and how it was translated into the application.
In agile development, acceptance testing needs to be performed at the user story level. Making crucial transitions from story to implemented feature and back to story requires participation in story refinement, story break down into features and test case development for those features. This level of upfront involvement makes getting from user story to acceptance test significantly easier. Even so, tracing user stories implementation has the potential to be much faster, simpler and require far less overhead.
Virtually all these activities can be improved and accelerated with automation. Tracking a story from inception to acceptance test can be done manually, but that means testers have to spend time examining documentation to perform the activity. A requirements and test management package will enable testers to record user stories and resulting features, while tracking acceptance test results back to both features and user stories.
Likewise, functional, regression, and acceptance testing can be done manually, but at the cost of additional time and resources. However, that’s not being agile. Once tests are validated, most can and should be executed automatically, even as part of the build process. Automation accelerates testing, user acceptance of the application and ensures repeatability of an important part of the agile development process.
1. Get to know the domain expert and user community. Fundamentally understand the business goals of the application.
2. Break down user stories into prioritized testing needs and track those needs until completion. Use automated systems to capture user stories, distill requirements and trace requirements through to implementation, and back to user stories.
3. Translate testing needs into test cases as early as possible. Work with users and business analysts to ensure the test cases reflect real business needs. Work with developers to devise technology-facing tests, such as integration and unit tests. Use automation tools such as Telerik’s TeamPulse and Telerik Test Studio suite to enhance communication between developers, testers and users.
4. Automate test cases and test execution using automated testing tool so tests can be rerun automatically, ideally as part of the build process.
5. Track test case execution to ensure the fitness of the application. Be ready to report on test execution at any time, so decisions can be made on the deployment side.
6. Trace requirements and user stories from inception to delivery to ensure business needs have been adequately addressed.
This blog post provides a synopsis of The Agile Tester’s Guide to the Galaxy written by Peter Varhol and Steven Vore.