Reliable Objects: Lightweight Testing for OO Languages
IEEE Software
Efficient Strategies for Integration and Regression Testing of OO Systems
ISSRE '99 Proceedings of the 10th International Symposium on Software Reliability Engineering
Building Trust into OO Components Using a Genetic Analogy
ISSRE '00 Proceedings of the 11th International Symposium on Software Reliability Engineering
A self-testing autonomic container
ACM-SE 45 Proceedings of the 45th annual southeast regional conference
Reducing verification effort in component-based software engineering through built-in testing
Information Systems Frontiers
Electronic Notes in Theoretical Computer Science (ENTCS)
Evaluation of online testing for services: a case study
Proceedings of the 2nd International Workshop on Principles of Engineering Service-Oriented Systems
Hi-index | 0.00 |
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.