It may sound counter-intuitive to say that developers shouldn’t perform testing on the products they produce. After all, who knows a site or app better than those who created it? Aren’t developers exactly the people who should be testing software, given that they put it together and know how it’s supposed to work?
It’s this common-sense assumption that lies behind the idea that developers should assist test teams with strategies like unit testing—if they’re not taking complete responsibility for testing themselves. The latter approach—having all testing, GUI and functional, carried out by developers rather than a dedicated QA team—has been adopted by many development and digital agencies, which seems logical.
(Related: How testing works in an agile world)
It also seems prudent in terms of costs. Full-time QA teams are expensive to maintain and, because of the intermittent nature of software testing, are often underutilized. From this perspective, having developers perform testing as and when it’s needed makes more sense than employing testers who will always have too much downtime.
But as rational as all of this may sound, it’s not a good idea to do without professional software testers. The reason? Software is often more likely to be released with bugs when tested by developers, not less likely.
There are several contributing factors here, but one of the most important is that testing overburdens developers with workloads that are too heavy. A developer who has spent all day coding and is then required to put in a couple of hours testing is likely to tire quickly, lose focus and make mistakes, resulting in crucial bugs being missed.
This creates a need for post-go-live fixes, which further increase workloads and make it even more likely that exhausted developers will miss bugs on other testing projects, too. A self-defeating cycle can result, where all efforts to ensure that software works better end up making it worse.
Another contributing factor is the fact that, often, developers simply don’t have enough time to perform testing effectively. When testing has to be fitted in around development work and completed within the standard timeframe of the two or three days before a site or app goes live, it is difficult for developers to ensure good functionality by covering a broad range of Web and mobile platforms.