What business people should know about software testing
Software testing is the process of evaluating an application with the intention of establishing its functionality and suitability for an intended purpose. You might say that testing determines the difference between ideal and existing conditions and helps bring software closer to ideal by noting where software departs from intended operation and discovering what needs correction.
Testing cannot be done by just anyone, and who does the testing depends on the stakeholders involved and the resources available. Some large companies have their own in house software development teams, although this is increasingly becoming the exception and not the rule.
Testing breaks down into two broad sections. These are, testing during development and testing just before, during and after deployment. Testing during development is normally done on sections of code (modules) that are then linked together. The latter type of testing is sometimes referred to as user acceptance testing or user experience testing, depending on when it is done. Most tests in this phase involve the end users to some degree. Testing can also take place after deployment, when updates are made or reliability needs to be validated again.
Testing should begin as early as possible. This reduces cost and allows more time to discover bugs and improves the chances of delivering error free software. Testing during development can be based on Requirements and proceed through development and into the deployment phase. How early should it start? Even the gathering and verification of requirements can be considered a form of testing, as the more detailed and complete the requirements are, the less reworking will be required later, thus reducing the amount of update testing required.
Testing can be considered to be complete when the software has been verified and validated. Verification is mostly done during development and validation takes place toward or at the end of the development cycle. Verification is making sure that the software meets the functional requirements while validation determines that the software behaves as intended.
Validation testing is sometimes considered a luxury and may be minimized to lower expenses. This is never a good idea as it turns the end users into beta testers, which can ruin a software release and create public relations and business related problems. Also, validation is the exclusive domain of testers. Developers are assigned different elements or areas. Testers, on the other hand transcend the development cycle and understand software functionality and the relationship between different modules as well as software behavior. This is why thorough testing is a major component of successful software deployment.