Code Coverage: Unterschied zwischen den Versionen
| Zeile 81: | Zeile 81: | ||
Beispiel.beispielFunktion(-1, -1); // Pfad 4 | Beispiel.beispielFunktion(-1, -1); // Pfad 4 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab. | |||
=== Unterschied zwischen Zweig- und Pfadüberdeckung === | === Unterschied zwischen Zweig- und Pfadüberdeckung === | ||
Version vom 28. Oktober 2025, 07:20 Uhr
Code Coverage in Java
Beispielcode
public class Beispiel {
public static void beispielFunktion(int x, int y) {
if (x > 0) {
System.out.println("x ist positiv");
}
if (y > 0) {
System.out.println("y ist positiv");
}
}
}
Dieser Code hat zwei unabhängige if-Bedingungen: eine für x und eine für y.
1. Anweisungsüberdeckung (Statement Coverage)
Anweisungsüberdeckung bedeutet, dass jede Anweisung im Code mindestens einmal ausgeführt wird. In diesem Beispiel sind die Anweisungen:
- if (x > 0)
- System.out.println("x ist positiv");
- if (y > 0)
- System.out.println("y ist positiv");
Das Ziel der Anweisungsüberdeckung ist es, sicherzustellen, dass jede dieser Anweisungen mindestens einmal aufgerufen wird.
Testfall für 100% Anweisungsüberdeckung:
Beispiel.beispielFunktion(1, 1); // x > 0, y > 0
Erklärung:
- Bei beispielFunktion(1, 1) wird die Bedingung x > 0 erfüllt, also wird System.out.println("x ist positiv") ausgeführt.
- Ebenso wird die Bedingung y > 0 erfüllt, also wird System.out.println("y ist positiv") ausgeführt.
2. Zweigüberdeckung (Branch Coverage)
Zweigüberdeckung bedeutet, dass jeder Zweig einer Bedingung mindestens einmal getestet wird (true und false).
- if (x > 0): true / false
- if (y > 0): true / false
Testfälle für 100% Zweigüberdeckung:
Beispiel.beispielFunktion(-1, 1); // x <= 0, y > 0
Beispiel.beispielFunktion(1, -1); // x > 0, y <= 0
Damit sind alle Zweige (true/false) beider Bedingungen abgedeckt.
3. Pfadüberdeckung (Path Coverage)
Pfadüberdeckung bedeutet, dass alle möglichen Kombinationen von Pfaden durch den Code getestet werden.
Mögliche Pfade:
- x > 0 und y > 0
- x > 0 und y <= 0
- x <= 0 und y > 0
- x <= 0 und y <= 0
Testfälle für 100% Pfadüberdeckung:
Beispiel.beispielFunktion(1, 1); // Pfad 1
Beispiel.beispielFunktion(1, -1); // Pfad 2
Beispiel.beispielFunktion(-1, 1); // Pfad 3
Beispiel.beispielFunktion(-1, -1); // Pfad 4
Mit diesen vier Testfällen decken wir alle möglichen Pfade durch den Code ab.
Unterschied zwischen Zweig- und Pfadüberdeckung
- Zweigüberdeckung: Jeder Zweig einer Bedingung (true/false) wird mindestens einmal durchlaufen.
- Pfadüberdeckung: Alle Kombinationen von Bedingungen werden getestet.
Pfad 4 (x <= 0, y <= 0) wird nur bei Pfadüberdeckung getestet, aber nicht bei reiner Zweigüberdeckung.
Fazit
- Zweigüberdeckung: 2 Testfälle genügen
- Pfadüberdeckung: 4 Testfälle notwendig
Pfadüberdeckung ist strenger, da sie jede mögliche Ausführungskombination abdeckt.
