Skip to Content

Top-level Navigation: Current-level Navigation:

Path: DSG > research > prototypes > Genesis

Tools: Drucken

Genesis - Generating Serice-based Testbeds


Testing software for faults and failures is an essential part of the software development process, which should be performed continuously during all stages of the process itself. Of course, this is also the case for developing software based on Service-oriented Architectures (SOA). However, although SOA has been an important topic in research and industry, one could notice a lack of tools supporting the developers in setting up testbeds for SOA-based applications. Solutions for testing individual Web services, such as stress tests and functionality tests, do exist. But when it comes to testing software which operates on whole environments of distributed services, such as workflow engines or dynamic registries, the developer needs a flexible facility to set up customized testbeds of services.

With Genesis we provide a framework for generating service-based infrastructures, which allows developers to set up SOA testbeds in a convenient manner. Genesis combines an approach for automatic generation and deployment of Web services at the back-end with a programmer-friendly API at the front-end. Developers can specify functional and non-functional properties of Web services which can be deployed on-the-fly on remote hosting environments. Complex behavior of the testbed can be achieved with various plug-ins which extend the functionality of the individual Web services and can be steered remotely from the front-end. Therefore, Genesis allows setting up large-scale testing infrastructures for complex service-oriented systems.

Concept and Architecture

The architecture of Genesis (see Figure below) includes a distributed back-end, hosting the testbeds Web services, and a single font-end part for controlling the back-end. Via the frontend it is possible to specify the components and characteristics of the testbed, while the back-end’s task is to generate the testbed infrastructure based on this information. Furthermore, it is possible to integrate Genesis testbeds into existing service-based infrastructures in order to incorporate them into the testcases.


Genesis provides a Java API for creating and manipulating Web service descriptions based on a simple model and for transferring these to the back-end. The developer is free to utilize this API in his/her own applications. Alternatively, the developer can use the Bean Scripting Framework to integrate Genesis into various scripting languages, such as Jython.


At the back-end, the functionality is split into different modules. The most important one is the Web Service Generator which interprets the descriptions created at the front-end and generates real Web service instances from these. The generation of services includes the analysis of the specified properties and message types, analysis of referenced plug-ins extending the services, the generation of corresponding Java code based on this information, and finally the compilation and deployment of the services.


The pluggable extendability of Genesis allows to establish complex dependencies inside the testbeds, as seen in real life SOA environments. Each plug-in can specifiy a list of properties (variables) via which it can be controlled from the front-end. We provide a few sample implementations of plug-ins, such as the QOSPlugin simulating various Quality of Service properties, the BPELPlugin for integrating workflows into the testbed, etc.


The main features of Genesis are:


The Genesis prototype can be downloaded from here.