EMZETT.
Login

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 if in 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: c8 und Istanbul (JS), JaCoCo (Java), coverage.py (Python).

Siehe auch: Mocking und Test-Doubles, Test-Driven Development (TDD)