by Bill Rinko-Gay
When I first started researching Agile Quality Assurance I was told it wasn’t necessary because Agile methods have quality built in. Agile teams developed processes such as Extreme Programming (XP) and Test Driven Development (TDD) to produce quality code in a short amount of time. Because these processes work well, it is believed Agile teams don’t need Quality Assurance. I disagree. I have studied and implemented Agile methods based on over 28 years of practical test and quality assurance experience. My viewpoint gives me a different perspective on Agile and Quality Assurance.
Developers have a specific expertise and viewpoint. Early Agile methods focused on development tools and practices because that’s what developers could control. The work they did and the results they achieved are good. They showed quality code can be developed in a short amount of time. But there’s more to running a development project than just writing the code. That’s why project management methods have been developed to compliment the development methods. Now we need to adopt new methods of process evaluation and independent testing that can add value to Agile teams – Agile Quality Assurance.
As with anything Agile, I’m not saying that Agile teams need to add one or more QA members to the team. I’m defining principles and activities that provide QA. How the team organizes to implement those principles and accomplish those activities is up to the team.
I intend to write about individual subjects in the future, but here are some key principles involved in Agile Quality Assurance:
- Quality software is software that makes the customer happy. You have to build the right thing, and you have to build it right.
- The only way to assure quality software is to build quality in. Good quality assurance focuses on how to build quality in. Finding and removing bugs is quality control.
- It is easier to build quality software and verify it is right if you develop code in small increments.
- Development and Test is a single activity, not two separate activities
Key roles in Agile Quality Assurance are:
- Making sure the features, as designed, will meet the need (building the right thing)
- Helping to find the technical solution with the highest quality
- Analyzing the process to identify and remove barriers to building quality in
- Testing the software to verify the process is working, and that the software is built right
In future posts we’ll look at these principles and activities, and some of the team behaviors that flow from them.