Was ist Zweigüberdeckung?
Die Zweigüberdeckung (engl. Branch Coverage) ist ein Maß für die Qualität von Softwaretests im White-Box-Testing. Sie gibt an, wie viele der möglichen Verzweigungen im Programmcode tatsächlich durch eine Menge von Testfällen ausgeführt wurden.
Eine 100% Zweigüberdeckung bedeutet, dass alle möglichen Entscheidungen des Codes (true/false-Pfade) mindestens einmal getestet wurden. Damit ist auch automatisch eine vollständige Entscheidungs- und Anweisungsüberdeckung erreicht.
Beispiel für Zweigüberdeckung
Betrachten wir folgenden Pseudocode:
if (x > 0) {
if (x > 10) {
Ausgabe = "Groß";
} else {
Ausgabe = "Mittel";
}
} else {
Ausgabe = "Klein oder negativ";
}
Um 100% Zweigüberdeckung zu erreichen, sind mindestens drei Testfälle notwendig:
x = -5→ Zweig „else“x = 5→ Zweig „if (x > 0)“ UND „else“ im inneren Blockx = 15→ Zweig „if (x > 0)“ UND „if (x > 10)“
Damit wurden alle möglichen Verzweigungen (true/false-Ausgänge) einmal durchlaufen.
Vorteile der Zweigüberdeckung
- Liefert ein objektives Maß für die Testqualität.
- Hilft, ungetestete Teile der Programmlogik zu identifizieren.
- Höhere Abdeckung als reine Anweisungsüberdeckung.
Nachteile der Zweigüberdeckung
- Kein Garant für Fehlerfreiheit: Auch bei 100% Zweigüberdeckung können logische Fehler unentdeckt bleiben.
- Aufwand steigt mit der Komplexität des Codes (besonders bei vielen verschachtelten Bedingungen).
- Deckt nicht alle möglichen Pfade ab – dafür wäre Pfadüberdeckung nötig.
Tipps für die Praxis
- Abdeckung messen: Nutze Test-Tools, die Branch Coverage automatisch berechnen (z. B. in gängigen Unit-Test-Frameworks integriert).
- Schrittweise verbessern: Setze realistische Ziele, z. B. erst 70%, dann 90% Abdeckung.
- Kritische Stellen priorisieren: Fokus auf Codebereiche mit hoher Risikorelevanz oder hoher Komplexität.
- Kombinieren: Zweigüberdeckung ist wichtig, aber sollte mit funktionalen Tests (Black-Box-Tests) kombiniert werden, um auch die Anforderungen der Anwender abzudecken.
