The goal of this project is to develop a more efficient testing approach for the members of a program family. With the objective to save development effort, programs for related application areas are often developed as a program family, which consists of different program variants that share a common core of functionality. Particularly the concepts of object-oriented programming support this form of development, since common functionality of different program variants can be easily implemented using object-oriented frameworks. For this reason our current work is focussed on the use of object-oriented frameworks for this purpose.
But while reusing an already used and therefore – at least partly – tested framework improves the overall quality of the program family, it remains indispensable to thoroughly test every new program variant. Even the most careful development cannot avoid that defects are introduced adapting and extending a framework. Unfortunately in practice testing programs, which are even based on the same framework, remains laborious. Generally it boils down to develop specification-based system level tests for every program, making it difficult to reuse test cases and data among them. In contrast to this, our test bench approach tries to render this testing more efficient by exploiting the commonalities of the program family members. The idea is to develop a framework-specific test bench that can automatically execute a great number of tests for any program based on the actual framework, allowing the reuse of test cases and data across the whole framework-based program family.
The main problems opposing our test bench approach are tightly linked with those of testing object-oriented software in general. Actually, there is a lack of methods to test the parts of an object-oriented program above class, but at a finer granularity than system level. Especially there is no workable approach for testing the interaction of objects, so called object collaborations, which embody the main complexity of an object-oriented program. Furthermore, besides a predefined class structure object collaborations are the central element of an object-oriented framework, prescribing the characteristic behaviour of any program based on the framework and exposing the common behaviour of the resulting program family. So developing test cases for those collaborations is the approach, we chose for our test bench. In particular role modelling has proved as an effective means to identify and describe object collaborations independent from a concrete implementation, making test cases derived from a role model reusable for any program based on the particular framework. This project studies in particular techniques to model the characteristic collaborations of a framework using roles, to gain test cases from those role models, and to implement them in a test bench for programs based on the considered framework.