Software failure can result in delayed flights, disappearing grocery warehouses, vanishing FBI files, and malfunctioning oxygen systems resulting in death. In fact, here's a list from Business Computing World of what IT consultants in the U.K. voted as the top software failures of 2011, including a bug in a financial system that caused investors to lose $217 million. Professional estimator Dan Galorath has figured the annual price tag for bad coding is anywhere from $50 billion to $80 billion a year. Other estimates are even higher.
The reasons for software failure are many. But the one common element is inadequate or sloppy or half-hearted testing. The big questions anyone involved in software development has to ask: Are our testing methods effective? Do we have the right people for testing? Do we have the time? And: Should we consider outsourcing our software testing?
It's not easy to give up something as critical as quality assurance. But before automatically assuming it's always best to keep testing in-house, consider these half-dozen reasons that might justify enlisting outside expertise.
1. Most software development firms are focused on software development and not testing. (Of course there are exceptions.) A company that specializes in testing specializes in testing. They will have people who are trained specifically in testing methodologies. They will have people who are driven by a need to find errors and trap bugs.
2. Most programmers working at a software company want to sling code, want to build products. They want to create software. They don't want to test software. To them, testing – real testing – is boring and tedious. You probably do not want someone with that perspective to be involved in the final testing of your application.
3. Testing software is a discipline, and it requires disciplined practitioners – and not junior programmers who are randomly given the QA task because they're available or not yet masterful at doing the "important" jobs. Someone working at a company specializing in application testing is going to have the skill and the personality and the personal interest needed to identify errors in code.
4. A company that provides testing services is going to be experienced at developing test strategies, and have a test environment, and perform manual as well as automated testing. They will have the equipment and the tools and the methodologies required for stringent testing. They will have built reliable test scripts.
5. A testing company will have a project management system designed specifically for testing and debugging, tracking and reporting. Change management will be part of their core.
6. Any outsourcing project relies on the right people to succeed. The people who really know testing know how to challenge a customer, how to diplomatically but firmly let the customer know when the code they're inspecting has a tendency toward defects. They do not tolerate defects.
Even though some of us might appreciate a software glitch like this one, the failure to adequately and stringently test applications before unleashing them is not something to take lightly. It can lead to much more than mere annoyance. Not discussing the option of calling in expert and experienced testers is a form of developer malpractice.