Code-Abdeckung (Coverage)
Kurz: Die Code-Abdeckung misst, welcher Anteil des Programmcodes von Tests ausgeführt wird, zum Beispiel „80 % der Zeilen”.
Genauer: Sie zeigt ungetestete Stellen, sagt aber nichts über die Qualität der Tests: Eine Zeile kann ausgeführt werden, ohne dass ihr Ergebnis geprüft wird. Hohe Abdeckung ist notwendig, aber nicht hinreichend.
Im Detail
- Arten: Zeilenabdeckung, Zweigabdeckung (jedes
ifin beiden Richtungen), Pfadabdeckung. - Sinnvolle Ziele: 70 bis 90 % für Logik. 100 % um jeden Preis führt zu wertlosen Tests.
- Mutationstests: Verändern absichtlich den Code und prüfen, ob die Tests das bemerken. Das misst die Wirksamkeit besser.
- Wichtiger als die Zahl: Kritische Pfade (Zahlung, Berechtigung, Berechnungen) gut testen.
- Werkzeuge:
c8und Istanbul (JS), JaCoCo (Java), coverage.py (Python).
Siehe auch: Mocking und Test-Doubles, Test-Driven Development (TDD)