The Role of Quality Assurance in an Agile Environment
The Agile Manifesto seems to go against the traditional role of Quality Assurance (QA). The Agile Manifesto (from http://agilemanifesto.org/) states
We are uncovering better ways of developing software by doing it and helping others to do it. Through this work we have come to value
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
However with traditional QA
- There is a QA phase that is defined within the overall project plan
- There is a QA process
- Specifications (documentation) are required
- Test case and test plans are documented
So we have to ask, is there a role for QA in an Agile environment? The answer is yes, however the role is somewhat different. In an Agile environment, QA engineers should be involved from the start of a sprint. They can
- Help to determine if stories and their acceptance criteria are well defined and if they satisfy customer requirements
- Ensure that unit tests are written
- Provide developers with high level test cases for the stories before code is written
- Perform exploratory testing on early builds
- Organize usability testing
- Demonstrate the stories during Sprint Review
All of these things are important for the quality of the product. By having QA involved from the start of a sprint there is no need to have neither a defined QA phase nor a formal QA process . By having QA work with the developers early on, there isn't a need for formal specifications (although some documentation is still useful). Of course QA engineers will still execute tests to verify implementation of a story as well as regression and performance testing.
So there is definitely a need for Quality Assurance in an Agile environment, it's just that the role is different than what it is in a traditional environment.
As a QA Engineer, when you first switched to Agile, what did you think? How has your role changed after transitioning to an Agile environment?