Do Agile Teams Require Agile QA?
If someone asks me “What do you like the best in a software development project?” I will have to answer “Documentation”. I think all QAs would agree with me because they all love documentation and written specifications.
But the traditional style of Quality Assurance seems at odds with the agile manifesto. Agile Testing abandons the old notion about how tester communicates, and instead of having testing activities practiced after a considerable amount of development, testing is often carried out on half baked code. It creates challenges particularly in an offshore agile model.
Some practical solutions to challenges which I have witnessed can be categorized as following:
Efficient Documentation – Capture the essence, not the details!
Documents are as good as they are going to get. Requirements and design docs are insufficient in Agile, as are test plans and bug reports. Individual test steps may change based on frequently changing code, but as long as the core functionality remains the same, testing should not be blocked by poor or late documentation. Sources of information other than project documentations can be used when designing or planning tests. Testers should not get tangled in the details; observations from testing could actually end up providing more details and enhancing the documentations.
Test Driven Development – Another buzz word!
Thanks to JUnit, NUnit and other unit testing tools developers are adapting more and more to Test Driven Development. Developers gain insight into potential errors, and QAs understands the root cause of the bugs. Many small production releases are now supported by most of the development environment. With TDD, even with major releases, there cannot be a defect tsunami and no need for immediate rescue plans.
Active Collaboration – Let’s talk!
Agile only works when there is frequent formal as well informal communication within a team. People (Dev and QA) seems to be hiding behind the word “Agile”. The degree of collaboration for a successful agile development demands early QA involvement. QA needs to be absorbed at the outset so that they can share learning and best practices with others, develop a common communication plan, foster information flow across the team, and adjust test plan and tests with business need.
Regression Testing – Testing in never done!
Without the time devoted to complete testing, how do we declare the testing is done? Agile tester need to be able to justify tests in term of risk. Ultimately testing must be prioritized just like stories. With frequent iterations, QA need to retest often. Just the unit tests are not enough. QAs do not necessarily need to execute full regression tests for each iteration; they can automate some level of user-level regression tests and run parts in each iteration.
As most QAs who are now testing on projects being developed in agile methodology realize, QA have a more involved role in all aspects of the development cycle than a conventional projects demand. QAs define, design, devolve and execute tests and collaborate with customer to define the acceptance test criteria. And because agile development is an iterative process with multiple “sprints”, QA must have end-to-end involvement, reinforcing quality and stability at every build.