What differences between traditional and Agile development are there in the way testing processes are managed?
In Waterfall development, testing is a separate phase done by a separate test or QA team. A project manager or PMO sets standard processes for the whole SDLC that guides everyone in the project. The testing or QA manager establishes the testing processes, and ensures that everyone follows them. Since development cycles are long, the testing processes may only be revisited and improved once or twice per year.
In Agile development, testing is an integral part of software development and is the responsibility of the whole cross-functional team. Testing comes first in Agile development. When teams plan a new project, theme or user story, they start by thinking about how they’ll test the new features. Then they design the code around making the tests pass. There are testing experts on the team who help everyone get a better understanding of ways to do a good job of testing, but all team members are responsible for delivering a high-quality software product.
In Agile development, the whole team addresses issues with the testing processes. This is often done via iteration retrospectives, where obstacles are identified, along with experiments to try to overcome those obstacles and improve the testing process.
For example, if testers are finding a lot of unit-level bugs in the “finished” code, the team might decide to have programmers and testers pair to test the code before checking it in. Or, perhaps the team finds that the customers aren’t happy with the delivered code, it doesn’t really meet their requirements. The team will brainstorm ways to do a better job of working with the customers to really understand the features they need and the business problems they hope to solve.
Recently my team worked on a theme during which we discovered many features or items had been left out, new user stories had to be written and done. To try to prevent so much unexpected work, we decided to try story mapping, a hands-on way to get the development team and all stakeholders together to model a theme or project and slice it into user stories. We learned a lot from this effort.
A testing Community of Practice is another good way to help a development organization continually improve its testing practices. This is usually led by a test or QA manager. Everyone interested in testing participates in workshops, lunchtime demos and other activities where people from different teams share their testing processes and new techniques that work for them.
This was first published in February 2012