Self-Testable Components: From Pragmatic Tests to Design-for-Testability Methodology

  • Authors:
  • Yves Le Traon;Daniel Deveaux;Jean-Marc Jézéquel

  • Affiliations:
  • -;-;-

  • Venue:
  • TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

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 this 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 this 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-ContractTM in the language, the Eiffel implementation is detailed here.