Self-testable components: from pragmatic tests to design-for-testability methodology
- 20 January 2003
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
Abstract
Testing is a key aspect of software development, because of its cost and impact on final product reliability. Classical views on testing and their associated testing models, based on the waterfall model, are not well-suited to an OO development process. The standardization of semi-formal modeling methods, such as UML, reveals this trend: testing can no longer be separated from specification/design/code stages. A test approach integrated with the OO process must be defined with an associated testing philosophy. The approach presented in the paper aims at providing a consistent framework for building trust into components. By measuring the quality of test cases, we seek to build trust in a component passing those test cases. We present a pragmatic approach for linking design and test of classes, seen as basic unit test components. Components are self-testable by enhancing them with embedded test sequences and test oracles. Self-testable components serve as building blocks for performing systematic integration and non-regression testing. The main contribution presented in the paper consists of using component self-tests to systematically exercise main system structural dependencies. This approach has been implemented in the Eiffel, Java, Perl and C++ languages. Since it is simpler, due to the direct support for Design-by-Contract(TM) in the language, the Eiffel implementation is detailed.Keywords
This publication has 14 references indexed in Scilit:
- Incremental Testing Of Object-Oriented Class Structures†Published by Institute of Electrical and Electronics Engineers (IEEE) ,2005
- Testability measurements for data flow designsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Testing object‐oriented software: a surveySoftware Testing, Verification and Reliability, 1996
- An Experimental Evaluation of Data Flow and Mutation TestingSoftware: Practice and Experience, 1996
- Integrated object-oriented testing and development processesCommunications of the ACM, 1994
- The revealing power of a test caseSoftware Testing, Verification and Reliability, 1992
- Investigations of the software testing coupling effectACM Transactions on Software Engineering and Methodology, 1992
- Constraint-based automatic test data generationIEEE Transactions on Software Engineering, 1991
- Selecting Software Test Data Using Data Flow InformationIEEE Transactions on Software Engineering, 1985
- Hints on Test Data Selection: Help for the Practicing ProgrammerComputer, 1978