Reusability is an important technique for improving software productivity and quality. Significant academic and industrial effort has been put into the study of reuse in various phases of the software lifecycle, viz. requirements, design, and implementation (coding). The impact and feasibility of reuse in the testing phase has only recently been explored. Testing is an important method for assuring the quality of many systems and it frequently consumes a major portion of the software lifecycle cost. Techniques for improving the productivity of software testing while maintaining software quality are important for many industries.
This thesis applies reusability to the testing phase. A lifecycle approach to testing is taken, and strategies for designing reusable test artifacts are discussed for each stage of the testing lifecycle, viz. test specification, test design, and test implementation (test cases).
For the specification phase, an approach to specifying test cases using domain abstractions is discussed. This is applied to specifying test cases for a safety-criticalmedical device, viz. a cardiac pacemaker, and reused as the system evolves. Results from this application are presented. In the design phase, common test designs used during unitand integration testing are captured as patterns. A conceptual framework for unit and integration testing is presented using these test design patterns. This is applied to unit testing an industrial application and results from the application are presented. In the test implementation phase, important industrial issues in test case reuse (regression testing) such as test revalidation, test case dependency, and test sequencing are discussed. Existing approaches to test case reuse are critiqued in light of these issues. In addition, some important system constraints commonly tested are identified, and an approach usingMethod Framework Sequence Specifications is presented to specify and test these constraints. Finally, a conceptual framework for developing and testing safety-criticalsystems is presented. This is applied to testing a cardiac rhythm management device and lessons learned are presented.