 |
 | |  |  | | Beschreibung |  | Die Pfadüberdeckung (engl. path coverage) zur Ermittlung der Testfälle konzentriert sich auf die einzelnen Pfade des Testobjekts. Pfade stellen hier die “Gesamtwege” des Kontrollflusses durch den Code des Testobjekts dar. Je nach festgelegtem Ziel sind ein gewisser Anteil oder alle Pfade im Code des Testobjekts zu durchlaufen. Da reale Programme, wie später noch gezeigt wird, aber oft eine sehr große Anzahl von möglichen Pfaden aufweisen, ist ein Durchlaufen sämtlicher Pfade während des Tests u.U. nicht möglich, zum Beispiel bei Schleifen. Um die bei der Pfadabdeckung notwendigen Testfälle zu identifizieren, orientiert man sich auch hier sinnvollerweise am Kontrollflussgraphen des Testobjekts.
In einem solchen Graphen werden einzelne Anweisungen oder Blöcke von sequenziellen Anweisungen als Knoten, und der Kontrollfluß zwischen Anweisungen oder Blöcken als Kanten (Zweige) dargestellt. Ein Pfad repräsentiert also eine bestimmte Abfolge von Zweigen durch ein Programmstück.
Beispiel:
Gegeben sei wiederum die 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
Ein möglicher Pfad durch diesen Kontrollflussgraphen wird z.B. durch die Kantenabfolge a, c, k beschrieben, was die Ausnahmebehandlung der Methode factorial bei negativen Werten für x darstellt. Weitere Pfade wären z.B. a, b, d, h, i, k (Schleife wird nicht durchlaufen, d.h. x ist 0 oder 1) oder a, b, d, e, f, i, k (Schleife wird einmal durchlaufen, d.h. x ist 2). Falls die Schleife mehrmals durchlaufen werden soll, so muß ein Rücksprung zum Schleifenanfang über Kante g erfolgen. Der zugehörige Pfad für x gleich 3 ist a, b, d, e, f, g, e, f, i, k. Darüberhinaus existieren aber noch weitere Pfade, wie z.B. a, b, d, e, f, g, e, f, g, e, f, i, k. Die Anzahl der Schleifendurchgänge kann durch Vergrößern von x solange erhöht werden, bis die maximal darstellbare Zahl für result auf dem Rechner erreicht ist. Daraus wird deutlich, dass bei der Pfadüberdeckung u.U. sehr viele Testfälle gebildet werden, und es stellt sich somit die Frage, welche dieser Testfälle sinnvollerweise ausgewählt werden sollen. Das C2-Abdeckungsmaß schreibt dazu vor, dass Testfälle generiert werden müssen, die
1. enthaltene Schleifen nicht durchlaufen
2. enthaltene Schleifen nicht oft durchlaufen
3. enthaltene Schleifen oft durchlaufen
wobei alle drei Bedingungen durch die Menge der Testfälle abgedeckt werden müssen. Für die Methode factorial entspricht das den folgenden Testfällen:
Testfall #1
x = -1
a, c, k
Testfall #2
x = 0
a, b, d, h, i, k
Testfall #3
x = 2
a, b, d, e, f, i, k
Testfall #4
x = 7
a, b, d, [e, f, g]5038, e, f, i, k
Der Wert für häufige Schleifendurchläufe wurde hier auf 5039 festgelegt, um die Ausführungsdauer von Testfall #4 zu begrenzen. Die Entscheidung, wie oft eine Schleife im Test durchlaufen werden sollte, hängt jedoch stark vom Testobjekt, der zu Verfügung stehenden Hardware, und dem zu erwartenden Kosten-Nutzen-Verhältnis ab. |  |
 | |  |  | |  | |  | |  |  | | Kommentare | | Es wurden 1 Kommentar und 0 Bewertungen abgegeben |  | | Kommentare |  | DI Andreas Raschke, 24.02.2004 | | "Unterschiedliche Interpretationen der For-Schleife" |  | | Verglichen mit der Untersuchung der Zweigabdeckung wird hier der Vergleich beim ersten Mal am Anfang (Pfad h), sonst aber am Ende der For-Schleife durchgeführt (Pfad k). Bei der Zweigabdeckung wird offensichtlich... | | [Kommentar ganz lesen] | |
|  |  | | Zu dieser Seite wurden noch keine Bewertungen abgegeben. |
|  | |  | |  |  |   | Übergeordnet |  |  |  | |  |  | |  |  |  |  |  | Pfadüberdeckung |  |  |  |  |  |  |
|