Built-In Contract Testing in Component Integration Testing

Abstract Assembling new software systems from prefabricated components is an attractive alternative to traditional software engineering practices which promises to increase reuse and reduce development costs. However, these benefits will only occur if separately developed components can be made to work effectively together with reasonable effort. Lengthy and costly in-situ verification and acceptance testing directly undermines the benefits of independent component fabrication and late system integration. This position paper outlines and introduces an approach for reducing manual system verification effort by equipping components with the ability to check their execution environments at run-time. When deployed in new systems, built-in tester components check the contract-compliance of their server components, including the run-time system, and thus automatically verify their ability to fulfill their own obligations. This comprises functional/behavioural contracts as well as quality-of-service contracts between individual components. Enhancing traditional component-based development methods with built-in contract testing in this way reduces the costs associated with component assembly, and thus makes the “plug-and-play” vision of component-based development closer to practical reality.