The goals of software testing may be classified into three major categories, as shown in Fig.1.
Short-term or immediate goals
These goals are immediate results after performing testing. These goals may be set in the individual phases of SDLC. Some of them are discussed below.
Bug discovery: The immediate goal of testing is to find errors at any stage of software development. More the bugs discovered at an early stage, better will be the success rate of software testing.
These goals affect the product quality in the long run when one cycle of the SDLC is complete. Some of them are discussed here.
Quality: Since the software is also a product, its quality is primary from the users' point of view. Thorough testing ensures superior quality. Therefore, the first goal of understanding and performing the testing process is to enhance the quality of the software product. Though quality depends on various factors, such as correctness, integrity, efficiency, etc., reliability is the major factor to achieve quality. The software should be passed through a rigorous reliability analysis to attain high-quality standards. Reliability is a matter of confidence that the software will not fail, and this level of confidence increases with rigorous testing. The confidence in the reliability, in turn, increases the quality, as shown in Figure 2.
Customer satisfaction: From the users perspective, the prime concern of testing is customer satisfaction only. If we want the customer to be satisfied with the software product, then testing should be complete and thorough. Testing should be complete in the sense that it must satisfy the user for all the specified requirements mentioned in the user manual, as well as for the unspecified requirements, which are otherwise understood. A complete testing process achieves reliability, which enhances the quality, and quality, in turn, increases customer satisfaction, as shown in Figure 3.
Risk management: Risk is the probability that undesirable events will occur in a system. These undesirable events will prevent the organization from successfully implementing its business initiatives. Thus, the risk is basically concerned with the business perspective of an organization.
Risks must be controlled to manage them with ease. Software testing may act as a control, which can help in eliminating or minimizing risks (see Figure 4). Thus, managers depend on software testing to assist them in controlling their business goals.
These goals are important after the product is released. Some of them are discussed here.
Reduced maintenance cost: The maintenance cost' of any software product is not its physical cost, as the software does not wear out. The only maintenance cost in a software product is its failure due to errors. Post-release errors are costlier to fix, as they are difficult to detect. Thus, if testing has been done rigorously and effectively, then the chances of failure are minimized and, in turn, the maintenance cost is reduced.
Improved software testing process: A testing process for one project may not be successful and there may be scope for improvement. Therefore, the bug history and post-implementation results can be analyzed to find out snags in the present testing process, which can be rectified in future projects. Thus, the long-term post-implementation goal is to improve the testing process for future projects.
Bug prevention: It is the consequent action of bug discovery. From the behavior and interpretation of bugs discovered, everyone in the software development team gets to learn how to code safely such that the bugs discovered are not repeated in later stages or future projects. Though errors cannot be prevented to zero, they can be minimized. In this sense, bug prevention is a superior goal of testing.