I’m not sure if I’m in the minority on this one, but I believe the best fit for the Quality Control role on an agile software development team is a developer hell bent on all things testing and configuration management related. These people are not easy to find. Too many see QC positions as a low rung on the ladder leading to bigger and better things like software development. I don’t see it that way. I see the ideal QC person (QCer) on an agile team as one who can help the team focus on the quality of its software. QC’s focus is on quality, but it’s the entire team’s responsibility to build quality into the end product.
The ideal QCer on an agile team knows how to do all sorts of testing such as: unit, integration, functional, acceptance, performance tests, etc. This does not mean that the QCer is the one responsible for writing these tests, but he/she needs to be able to understand these types of tests well enough to know if the tests are solid. A QCer who cannot do this is at a severe disadvantage in an agile environment. He/she will constantly be at odds with developers who swear they’ve got the right amount of test coverage overall on their code. I’ve found that developers have more respect for QCers who knows how to dig into the details as well as test at the higher levels. When the QCer is not able to get down to these lower levels, they can sometimes struggle to find their place in the process. The types of testing they’ll do will often have to wait until the end of a user story and it only covers a portion of the testing at that point.
Now, on larger projects, you can probably make use of a variety of levels of QC people. The more senior QCer will have the skills I’ve described, while others will only test at higher levels. It’s also not unusual to have QC people dedicated to configuration management on larger projects. The ideal QCer on an agile team should have the ability to understand and contribute to the configuration management (CM) process; including continuous integration. CM is critical to delivering quality software.
I realize I may be asking for too much in a QC role on an agile team. Some will argue that having strong software engineers on the team will eliminate the need for a QCer that provides this depth of knowledge in testing and CM. I’m not convinced. I think strong software engineers will be able to provide a fair amount of guidance on CM and the various levels of testing, but their time will be split in a number of other areas as well which does not provide enough focus on quality like a full time QC person can.