Entwurf und Implementierung eines Whitebox-Testtools für Java

Interne Diplomarbeit
Ausgegeben an: Zbigniew Jarmowski

Beim Testen von Software kann man verschiedene Strategien verfolgen, die unterschiedliche Arten von Fehlern offenbaren. Eine der bekanntesten Test-Strategien ist das sogenannte Whitebox- oder strukturelle Testen.
Dabei werden alle Kontrollpfade in einem Programm durchlaufen, so dass jede Anweisung eines Programms mindestens einmal ausgeführt wurde. In objektorientierten Sprachen ergeben sich durch Vererbung und die dynamische Bindung von Methoden besondere Fälle, die berücksichtigt werden müssen. Aufgrund der vielen Möglichkeiten, zum Beispiel Kontrollausdrücke für bedingte Anweisungen und Schleifen mit Werten zu belegen, ist diese Art des Testens nur mit Tool-Unterstützung praktikabel. Dabei wird zunächst der Quellcode eines Programms syntaktisch analysiert und mit Anweisungen instrumentiert, die zur Laufzeit des Programms unter anderem den jeweiligen Status von Kontrollausdrücken protokolieren. Diese Protokolle werden dann in einem weiteren Schritt ausgewertet und geben Hinweise auf noch fehlende Testfälle.
Die Arbeit besteht aus einem theoretischen und einem praktischen Teil. Im theoretischen Teil sollen die Grundlagen für die Instrumentierung von Java-Programmen zum Teil aus der Literatur, zum Teil neu erarbeitet werden. Es sind alle für Whitebox-Tests relevanten Fälle und ihre Instrumentierung zu dokumentieren.
Im praktischen Teil sind ein Scanner und ein Parser zu entwickeln, welche die Instrumentierung korrekter Java-Programme durchführen. Es ist darauf zu achten, dass die ursprünglichen, nicht instrumentierten Programme in jedem Fall restaurierbar sind. Die Protokollierung der Testdaten ist mit einer zweiten Diplomarbeit abzustimmen. Es soll möglich sein, die Fortschritte beim Testen eines instrumentierten Programms dynamisch zu verfolgen. Dazu ist der Umweg einer Protokoll-Datei zu vermeiden.
Die Implementierung des Tools ist in Java durchzuführen, dadurch ist eine praxisnahe Anwendung des Tools auf sich selbst möglich. Davon abgesehen ist das Tool mit allen Sprachkonstrukten von Java gründlich zu testen.