CodeCoverage

CodeCoverage mit PHPUnit messen

Bei der Erstellung von UnitTests ist es wünschenswert, dass die kritischen Stellen im Code getestet werden. Dadurch fallen Fehler in kritischen Stellen schneller auf. Ausserdem ist es gut, wenn soviel Code wie möglich automatisch durch Unittestfälle getestet werden kann, da so ein manueller Aufwand reduziert werden kann.

Bei großen Projekten verliert man jedoch leicht den Überblick über Testfälle und welche Stellen im Code getestet sind, und welche nicht.

Für diesen Zweck kann PHPUnit einen Bericht generieren, der einen Überblick über die Testabdeckung von Code liefert. Diese Berichte nennt man auch „Codecoverage Analyse“.

Eine Vorraussetzung für die Nutzung dieses Features ist die Installation von xDebug. Diese Erweiterung kann unter Ubuntu bequem über Aptitude installiert werden:

aptitude install php5-xdebug

Nachdem xDebug installiert wurde kann mit der Option „--coverage-html=/home/myfolder“ in „/home/myfolder“ ein Codecoverage Bericht des aktuellen Testlaufes generiert werden.

Beispiel:

phpunit --coverage-html ../CodeCoverage CalculationServiceTest.php

Das Ergebnis kann bequem mit einem Webbrowser betrachtet werden:


Eine Liste der PHP Dateien, für die eine Codecoverage Analyse vorliegt.
Liste der Dateien mit Codecoverage
Die Testabdeckung einer Klasse, Zeile für Zeile
Coverage einer Klasse Zeile für Zeile

Die CodeCoverage Analyse gibt Aufschluss darüber, welche Bereiche einer Klasse nicht getestet sind. Bei einem großen Projekt ist jedoch auch intressant, ob es auch komplette Klassen gibt, für die keine Testfälle existieren.

Mit der PHPUnit XML Konfiguration lassen sich Test zu mehreren Suiten zusammenfassen und die CodeCoverage Analyse kann auch Dateien in einem Verzeichnis einbeziehen, die ungestetet sind.

Navigation