The Pesticide Paradox
We have all heard of insect resistance to pesticides at one point or another. When pesticides are used to kill insects, those that are the most resistant to the pesticide are those which manage to survive, at least long enough to reproduce. This means, that the next generation of insects are more likely to be resistant to pesticides because they will have inherited resistance from their parents. Over time, the most resistant insects will continually survive and reproduce until eventually the entire population will be resistant.
Similarly with software development, a system will tend to build resistance against a particular testing technique.
What the heck am I talking about? Bugs of course! If you are the manager of a team of developers, and these developers know the testing techniques that will be used to find bugs in the code they develop, then these programmers will quickly learn to avoid creating such bugs to avoid being the one responsible for faults in the system.
While this may seem like a good thing, it could be problematic because testing will now suddenly stop finding bugs! If those working on the software forget that testing cannot prove the absence of bugs, they may then believe that their system is of higher quality than it really is.
Human error is inevitable, and if the programmers know the testing technique because it is always the same one used, what will happen is that the code will be written in a different way such that the bugs are displaced to different areas, but not eliminated. This of course it not intentional, but while focusing on eliminating one type of bug that they know will be found, other bugs will be created.
Most developers know, we rarely fix one bug without creating a few others to replace it! In large systems, bugs can often be difficult to detect, so change your testing technique from time to time to ensure that you release higher quality software.

Leave a Reply