Formal Aquisition an... Theses on offer Specification, Desig...

Student thesis

Static and dynamic analysis of the condition coverage of object-oriented Java-programs

(Original Title:Statische und dynamische Analyse der Bedingungsüberdeckung objektorientierter Java-Programme)



Modern software-systems are nowadays very complex. This complexity is the reason why failures in big software projects often appear, or why such projects completely fail. A contemporary example is the ALG-II-software of the Bundesagentur für Arbeit: At the beginning of 2005, hundred thousands unemployment benefit recipients had to wait for the money because the account numbers with less then 10 digits were zeroized wrong (right-aligned than left-aligned). At the Postbank were 200.000 recipients affected.
In most software lifecycles exists a test phase, which tries to find all of those failures. This phase is a kind of 'quality assurance' for the software. The test techniques applied in this phase can be classified according to Liggesmeyer into static and dynamic test techniques. Static test techniques determine the correctness of the program by analyzing the source code. An example for such a technique is model checking, which tries to prove the correctness of a software model against the specification. In case of an error, this technique also presents a counter example, which proves the failure.
By way of contrast, the dynamic test techniques run the program with correct input. Because of the correct input, existing failures can be determined by faulty output, or by faulty program behavior. Dynamic test techniques make use of the control- or dataflow, which they observe at runtime. An example for a controlflow based test technique is the condition coverage test, which is used to adequate test complex conditions. The different types of condition coverage tests, the properties and a possible implementation for the Java language are subject of this work.
This paper is divided into five chapters: Chapter 2 introduces the five condition coverage tests and the coverage metrics, which describes the completeness of a test relative to a criteria. The Chapter 3 shows the concepts, how the classic condition coverage tests are transferred to Java. The main part is chapter 4, where the implemented tool is described. Chapter 5 concludes the paper with a short summary and an outlook with possible improvements and extensions of the tool.

Author: Dominik Schindler

Tutor: Dr.-Ing. Norbert Oster