While I have had this conversation at nearly every company I have worked at, I do not believe that testing is a waste of time nor do I believe that you can deliver 100% bug free code ever. I recently saw this great post which got me thinking: Top ten most infamous software bugs of all time.
- Yes, you can deliver software, even Enterpise software with no QA. QA is all about risk management, helping you to better understand what you are about to ship, where the risk areas are and gives you a certain sense of comfort. You can go without this if money is tight but there is major risk with this approach.
- Developers should just write code with 0 bugs. This is ideal of course, and, perhaps even feasible when you look at the world in the micro level of individual functions. Unit testing, of course, should help provide a solid level of comfort here but it is only a piece of the puzzle. The bugs that will bite you hardest come from the interplay of functions, from incomplete understanding of requirements, from poor performance. Individual developers focused on individual features will not catch these.
- Unit testing is the answer, get 100% code coverage and dump the QA team. Same basic problems as noted above. Good unit testing takes time and you are often spending higher $$s on the developer resources than on the QA resources to get the same level of coverage. There is definitely an argument that automation is worthwhile, which I completely agree with. However, it comes down to managing expenses and in most startup environments it’s cheaper and nearly as cost efficient to have a good QA team on board than to have your developers writing large amount of unit tests.
Thankfully, I have not had this discussion at my current company. We have a good QA team and developers that are investing a proper amount of time on their unit testing. We are also striving to live by my Engineering Tenants which keeps us focused on doing the right things.
Let me know what you think. Have you ever worked in an organization successfully delivering software that did not have a QA team?