Friday, July 18, 2008

Product quality - Dev & QA synergy.

Quality is a problem which every software development team has to deal with.
We have the usual bell curves etc which we use to gain confidence regarding overall stability before we ship.
But, here are some observations based on the timelines of the curve & potential dev/qa synergy.

There are some projects where many bugs are found after the 'code freeze'. This is a clear indication that the dev & qa team had issues.
It is possible dev didn't unit test properly or many changes were made late in the cycle and either QA took time to ramp up and understand the changes or were busy with other things.

There are some projects where many bugs are found immediately after 'code complete' and then taper off quickly. This may be the case with many projects and might be a good thing. It means the QA team was able to understand the changes quickly and cover new areas thoroughly.
It might also mean that the Dev team didn't have enough time to unit test or didn't do it properly also in some cases depending on the severity of bugs found. Otherwise, it is a healthy indicator.

There are some cases where bugs are not found after 'code complete'. It is too good to be true and in many cases it ends up being the case that QA was testing the product before code complete and doing a full test pass.
It might also mean that there is a problem where QA & Dev worked too closely that all problems are explained in dev terms which don't end up in bug tracking system which is obviously not good for the user..

Then obviously, you have the worst case scenario where the curve never tapers off. If you ship a product without being aware of such trends, then you need help & it may have nothing to do with synergy.

Finally, there is a tendency to blame QA for bugs found. But, obviously developers who take pride in their code, thinks about the design first, unit tests, thinks about multi-threading issues, supporting the feature after release & follows best practices make less mistakes. I'd leave the 'who to blame' issue as an open question then.. ;-)