Wednesday, November 18, 2009

Who Does Testing?

I just recently followed a tweet and read a blog post by Steven Baker (here) that discusses his frustration with the Dev vs QA scenarios that constantly come up in the development process.

Being an Agile/Lean proponent the whole concept of differentiating developers from QA makes no sense to me. My job as I see it to to build the product the user wants. Period. Obviously, if the product doesn't work as the Product Owner expects it to work I have not done my job.

This seems reasonable, doesn't it?

I can't imagine developing a product without putting unit, integration and acceptance tests in place. How do I know what I have created works and works as the customer wants without these tests? I get the stories from the business folks and create the tests to ensure that I have written the code to do what they want, no more no less.

Why should this be a QA job? I know what is to be built and since I am the one doing the coding it makes sense to me to make sure it does that when I am creating the code. For me to write some code and then throw it over a wall to someone else to test delays the feedback one whether it is really working. It is waste that should be eliminated as it becomes more expensive to fix once it gets that far.

While I realize that there is a special skill set required to do superb testing, having a delay in the flow of the testing just delays everything and adds to the time, cost and frustration when defects or misunderstood requirements occur.

I prefer to have an integrated team of developers and testers. There are folks who specialize in testing and folks who specialize in developing. Having them integrated on a team and working together cross-functionally during construction allows us to catch things sooner and also allows us to learn from each other and enhance both of our skill sets. We get better insight into each other's worlds and merge them.

The result is that I am better at my job and they are better at theirs. We also eliminate the artificial wall between us. There is a Yin/Yang relationship to coding and testing - one does not exist without the other and so we are two sides of the same coin.

No comments:

Post a Comment