Bloggo back to the blog
Retrospective, anyone? by Eric Jimmink-->
(This was prompted by another blog post.) It has been asked many times. If we may assume that most of our projects are staffed with well-trained professionals, then why can we find so many defects in our applications?
In many cases, you have to be aware that you are not just testing the application, but by default also the process that led to it. I have been in projects where I started testing in late stages of development, simply because I wasn’t called in earlier. Even in the presence of a fair number of unit tests, I would find many defects if there was something amiss with the process. For example, if there was little or no communication with the customer that had commissioned the product, then I would find many defects that were due to assumptions made by the development team. If requirements had undergone many changes, then it is likely that those changes caused many tests that were built early on, to fail. I have been on a team where I saw that the total number of unit tests in the project had suddenly gone down instead of up. When I politely asked my colleague about it, he informed me that he had been pressed for time to incorporate the scope changes, and that he had outcommented the old tests. He wasn’t slacking off; in fact I knew him to be a really hard-working individual who put in a lot of unpaid overtime. He had simply been overruled, and pressed into releasing the software with a mediocre code coverage. What was defective about the process, is that the team was not allowed time to do the rework in the next iteration. Until we managed to convince our customer of the importance, that is.
I want to encourage any testers to analyze the causes behind the defects that they encounter, and look for a pattern. If you then discuss the causes of the problems with your colleagues, then as a team you should be able to improve your process over time. In so doing, it should become harder to find defects. Agile testing is like that: more focused on preventing rather than detecting defects.