Quality Assurance, or QA, is often given short shrift in a software development organization, especially when budgets are tight. When debating the software development budget at one of my software companies, the CEO finally asked, “Well, do you really want to hire a QA guy, or a programmer to add features to the software?”
It was a tough choice. I decided to hire the programmer because we had a huge list of features to implement. And we could not afford to implement a QA process without hiring a significant staff of QA engineers and someone to manage them.
In another example, an Accelerance client had developed their software and was getting ready for a Beta release to their first customers. They too had neglected QA. Although the work of their individual programmers was good, the entire system needed testing after the programming work was integrated together.
This client realized that going to market without a comprehensive test of the system would be a major disaster. An obvious indicator of the impending doom was the missing data on screens of the application whenever the VP of Engineering tried to use the software. Their target market was ordinary consumers who would not tolerate any missing data, confusing behavior or unexpected error messages.
How could such good engineers create such lousy software!?
It is because QA is the ugly step sister of software development. Even if the engineers are unit testing their code, they do not want to be bothered with testing the entire application. It is not considered a creative or “fun” part of the process. Consequently, QA is often neglected, leading to mediocre software and unhappy users.
Outsourcing is an excellent solution to the problem of nonexistent or incomplete QA. Yet some people are surprised to learn QA can even be outsourced. Outsourcing your QA is a terrific first step to taking advantage of low-cost offshore engineering resources.
One reason QA is such a good place to start with outsourcing is you do not necessarily need to divulge your source code. You can deliver a binary version of your software for installation and testing by your outsourced QA team.
Look for a team with experience performing the type of QA that you need. You can divide QA into 5 different types of testing:
1. Requirements Testing – making sure your software does what you designed it to do
2. Usability Testing – specialized testing that may require focus groups of target users
3. Load or Stress Testing – to ensure your software has the required performance
4. Environment Testing – testing your software on different operating systems, browsers, etc.
5. Regression Testing – an automated process to repeat tests quickly on each new release of your software
Regression testing is often used with unit testing. Unit testing is performed during programming and requires access to the source code. Other separate regression tests can exercise the user and programmatic interfaces defined for your software without viewing the source code.
Avoid outsourcing too much at once. Pick the type of testing that will give you the biggest benefit. For example, Regression Testing may be valuable because you can reuse the tests yourself after they are developed by the outsourced QA team. On the other hand, Environment Testing requires a large number of test cases, and low cost outsourcing is the only way to affordably complete them.
In summary, it is important to recognize the value of QA in the software development process. You may start out with a small development team and be satisfied with the quality of their code. As the complexity of the software grows, you can add QA resources either by outsourcing or hiring your own internal team.
When you undertake the creation of a large and complex software project, it is critical to plan for professional QA as part of the effort. If you don’t, you run the risk of making a bad first impression and losing critical early sales, funding for future projects, or worse. Even though outsourcing is criticized for eliminating jobs, outsourced QA may be just the tool you need to help keep yours.
Steve Mezak is a successful Silicon Valley technical entrepreneur and international outsourcing expert. Get your copy of his free report on “Outsourced Development – A Secret Weapon for Quickly Creating Software Products” now at http://www.Accelerance.com