Test Driven Development is an illustrative example of a process where testing is highly integrated in programming development. Test cases are designed and implemented in parallel to production code.
To support regression testing, frameworks such as JUnit are used to automate test execution. Doing this, testing can be performed often, and thus decrease complexity in the development process.
However, automatic test execution only makes tests easier to run. To improve the quality of tests the aim should be on how tests are generated. In this subproject we investigate how techniques in automatic test data generation can be applied to integrational software engineering.
The main idea is to write a formal specification (instead of test code) and from this automatically generate functional tests. Structural tests can be generated in a similar fashion from production code and verified against the formal specification.
In this way the software development tool can automatically determine any inconsistencies, thus test code (i.e. a specification) and production code will always be synchronized. This is important since test code is often as large as (or larger than) production code.