 |
 | |  |  | | Beschreibung |  | Die Anweisungsüberdeckung (engl. statement coverage) zur Ermittlung der Testfälle konzentriert sich auf die einzelnen Anweisungen des Testobjekts. Je nach festgelegtem Ziel sind ein gewisser Anteil oder alle Anweisungen im Code des Testobjekts abzuarbeiten. Um die dazu notwendigen Testfälle zu identifizieren, wird üblicherweise ein sog. Kontrollflussgraph anhand des vorliegenden Quellcodes aufgestellt.
In einem solchen Graphen werden einzelne Anweisungen oder Blöcke von sequenziellen Anweisungen als Knoten, und der Kontrollfluss zwischen Anweisungen oder Blöcken als Kanten dargestellt.
Beispiel:
Gegeben sei die folgende Methode zur Berechnung der Fakultät einer Zahl x. Da Fakultäten nur von natürlichen Zahlen und Null berechnet werden können, wird der übergebene ganzzahlige Wert dahingehend durch die Methode überprüft, und gegebenenfalls der Fehlercode -1 zurückgegeben.
int factorial(int x) {
int result = -1;
if(x >= 0) {
result = 1;
for(int i=2; i <= x; i++) {
result = result * i;
}
} else {
}
return result;
}
Anhand des Programmtexts wird nun der zugehörige Kontrollflussgraph abgeleitet:
Abb.: Beispiel eines Kontrollflussgraphen
Um in diesem Kontrollflussgraphen alle Knoten zu durchlaufen, ist nur ein Testfall nötig:
Testfall
a, b, d, e, f, i, k
Dieser Testfall stellt den spezifikationsgemäßen Gebrauch der Methode dar, d.h. es wird eine natürliche Zahl übergeben. Ein Testfall, der in der Methode eine Ausnahmebehandlung verursacht (Rückgabe des Fehlercodes -1), wird dagegen nicht produziert. Dies liegt darin, dass bei der Anweisungsüberdeckung leere Zweige nicht durchlaufen werden. Somit können evtl. fehlende Anweisungen nicht entdeckt werden.
Die Anweisungsüberdeckung heißt auch C0-Maß und ist wie folgt definiert:
Anweisungsüberdeckung = Anzahl ausgeführte Anweisungen / Gesamtzahl der Anweisungen
Mit obigem Testfall werden sämtliche Anweisungen der Methode factorial ausgeführt, d.h. die Anweisungsüberdeckung ist 100%. Für den Test kann zuvor aber auch eine geringere Anweisungsüberdeckung vereinbart worden sein. Es kann allerdings auch passieren, dass eine geforderte 100%ige Anweisungsüberdeckung auch durch eine große Zahl von Testfällen nie erreicht wird. Als mögliche Ursache kommt hier sog. unerreichbarer Programmcode (engl. dead code) in Frage, d.h. es gibt im Programm Anweisungen, die unter keinen Umständen abgearbeitet werden können. In solchen Fällen ist es sicherlich lohnend, diese Stellen genauer zu untersuchen, um mögliche Defekte als Ursachen aufzufinden. |  |
 | |  |  | |  | |  | |  |  |  | | Zu dieser Seite wurden noch keine Kommentare oder Bewertungen abgegeben. |
|
|  | |  |  |   | Übergeordnet |  |  |  | |  |  | |  |  |  |  |  | Anweisungsüberdeckung |  |  |  |  |  |  |
|