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.