Implementierung eines Werkzeugs für den White-Box-Test
Beim White-Box-Test versucht man eine Menge von Testfällen zu
konstruieren, sodass alle Anweisungen bzw. alle Pfade des zu
testenden Programms mindestens einmal durchlaufen werden.
Während die Anweisungsabdeckung einfach zu bewerkstelligen
ist, bereitet die Pfadabdeckung Probleme, da die Anzahl der
Pfade exponentiell mit der Anzahl der Verzweigungen im
Programm wächst. Ziel dieser Diplomarbeit ist es, ein
Werkzeug zu implementieren, das für gegebene Programmstücke
prüft, wieviele Pfade es durch das Programmstück gibt, und
welche davon in einer Menge von Testläufen bereits durchlaufen
wurden. Die noch nicht durchlaufenen Pfade sollen in lesbarer
Form angezeigt werden, sodass der Tester für sie gezielt
Testfälle konstruieren kann.
Um die Aufgabe zu vereinfachen, können folgende Einschränkungen
vorgenommen werden:
- Die Pfade durch eine Anweisungsfolge werden nur überprüft,
wenn die Anweisungsfolge weniger als 8 in Sequenz stehende
Abfragen enthält und kein RETURN oder EXIT aufweist.
- Enthält eine Anweisungsfolge eine Schleife, so ist in dieser
Anweisungsfolge nur zu prüfen, ob die Schleife betreten wurde
oder nicht. Die Anweisungsfolge innerhalb der Schleife ist
getrennt zu prüfen, falls es mehr als einen Pfad in ihr gibt.
- Zusammengesetzte boolesche Ausdrücke in Abfragen dürfen wie
eine einzige Verzweigung behandelt werden.
Folgende Lösungsidee wird vorgeschlagen (es soll jedoch in der
Literatur nach Alternativen gesucht werden): Eine Folge von
Verzweigungen ist eine Folge binärer Entscheidungen. Jede
Entscheidung kann wahr oder falsch sein. Somit er gibt sich
ein Bitstring, wie in folgendem Bild gezeigt:
+---- a? ----+
1 | | 0 a, b 11
+-----><-----+ a, not b 10
| not a, b 01
+---- b? ----+ not a, not b 00
1 | | 0
+-----><-----+
|
Der Bitstring wird durch Anweisungen erzeugt, die an
geeigneter Stelle automatisch in das Programmstück eingefügt
werden. Am Ende der Anweisungsfolge wird der Bitstring als
Binärzahl interpretiert. Die entstehende Zahl wird in einer
Menge gespeichert. Würden z.B. alle Pfade im obigen Bild
durchlaufen, ergäbe sich die Menge {0, 1, 2, 3}. Fehlt eine
Zahl, bedeutet das, dass der entsprechende Pfad nicht
durchlaufen wurde.
Betreuer: Prof. Dr. H. Mössenböck