In many respects, the Test discipline acts as a service provider to the other disciplines. Testing focuses primarily on evaluating or assessing product quality, using a number of core practices:
An interesting difference exists between Test and the other RUP disciplines: Essentially Test is tasked with finding and exposing weaknesses in the software product. To get the biggest benefit, you need a different philosophy or mindset than that used in the Requirements, Analysis and Design, and Implementation disciplines. Whereas those three disciplines focus on completeness, consistency, and correctness, the Test discipline focuses on what is missing, incorrect, or inconsistent. A good test effort is driven by questions such as these:
Test challenges the assumptions, risks, and uncertainty inherent in the work of other disciplines, and addresses those concerns using concrete demonstration and impartial evaluation. You want to avoid two potential extremes:
Information presented in various surveys and essays states that software testing accounts for 30% to 50% of software development costs. It is, therefore, somewhat surprising to note that most people believe computer software is not well tested before it's delivered. This contradiction is rooted in a few key issues:
High-quality software is essential to the success of safety-critical systems ”such as air traffic control, missile guidance, and medical delivery systems ”where a failure can harm people. These systems have to exhibit extremely high reliability and be tolerant to failure. The criticality of a typical Management Information System (MIS) may not be as immediately obvious, but it's likely that the impact of a defect could cause the business using the software considerable expense in lost revenue and possibly legal costs. In this information age, with increasing demands on providing electronically delivered services over the Internet, many MIS systems are now considered mission-critical; that is, when failures occur, companies cannot fulfill their functions and they experience massive losses. A continuous approach to quality, initiated early in the software lifecycle, can significantly lower the cost of completing and maintaining your software. This greatly reduces the risk of deploying poor-quality software and having to fix it in a subsequent release. |