Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation.
It involves the execution of a software component or system component to evaluate one or more properties of interest. In general, these properties indicate the extent to which the component or system under test:
- 1. Meets the requirements that guided its design and development
- 2. Responds correctly to all kinds of inputs
- 3. Performs its functions within an acceptable time
- 4. Is sufficiently usable
- 5. Can be installed and run in its intended environments
- 6. Achieves the general result its stakeholders desire.
As the number of possible tests for even simple software components is practically infinite, all software testing uses some strategy to select tests that are feasible for the available time and resources. As a result, software testing typically attempts to execute a program or application with the intent of finding software bugs.
Software testing can provide objective, independent information about the quality of software and risk of its failure to users and/or sponsors.