Comparison of popula... Theses on offer Traceability im Rahm...

Student thesis

Determination of data flow coverage while testing object oriented Java classes

(Original Title:Bestimmung der Datenflussüberdeckung beim Testen objekt-orientierter Java-Klassen)



There is a large demand for systematic testing methods that help to fulful the increasing requirements of software engineering. While tools for contol flow based testing are available and in use for many programming languages the availability of corresponding tools for data flow analyis is limited.
Control flow oriented techniques aim to assure sufficiant testing coverage of the complete program code. This doesn’t ensure in general, that all results of a calculation are used for further computation which may influence test results. By this errors in intermediate values not used remain undetected. This limits the amount of confidence that can be gained from control flow coverage testing.
It is therefore the aim of a dataflow coverage analysis to ensure sufficient use of each variable definition, based on a selected test criterion. It could for instance be specified, that for each definition of a variable all uses that are reachable without a further redefinition of that variable are to be tested. The determination of all pairs of definitions and uses required is the purpose of the static data flow analysis. Test coverage can be determined by comparing these with the set of actually executed combinations determined utilizing dynamic data flow analyis.
This paper describes an algorithm for the implementation of dynamic dataflow analysis in Java. Java sourcecode is instrumented to log all encountered data flow activity. In the subsequent evaluation the set of definition/use pairs is determined. Depending on the data flow coverage criterion selected equivalent pairs may be merged. Some possible adaptions of the chosen equivalence criteria to the special requirements of Java are proposed.
Chapter 1 gives an overview of data flow analysis. Chapter 2 contains an descripton of the methods used. Chapter 3 describes the developed runtime logging system. Chapter 4 contains a description of the instrumentation of Java sourcecode. Chapter 5 explains an algorithm for test analysis. The paper is concluded with brief descriptions of selected problems during the implementation in Chapter 6 as well as an outlook on further research topics in Chapter 7.

Author: Robert Daniel Dorn

Tutor: Dr.-Ing. Norbert Oster