PyDay: Code Coverage

Die “Code Coverage” oder auf deutsch “Codeabdeckung” ist ein Maß für die Frage, wie viel Prozent meines Quellcodes durch meine Unit-Tests erfasst wird. Logischerweise kann Code, der während der Tests nicht durchlaufen wird, auch nicht getestet werden. Wenn wir das nicht merken, bleibt das so. Und das ist doof.

Vor ein paar Tagen habe ich mich über die Faulheit von Programmierern ausgelassen. Dabei fiel schon der Begriff “Unit-Tests”, den ich dann in diesem Artikel noch etwas vertieft habe. Nun soll es darum gehen, wie ich mit Eclipse und PyDev die Codeabdeckung meiner Unit-Tests überprüfen kann.

Eine Bemerkung am Rande: Das theoretische Ziel von 100 % Codeabdeckung ist oft nicht erreichbar und vielleicht auch gar kein realistisches Ziel. Auch geht es nicht nur um die nackte Zahl, sondern natürlich auch um die generelle Qualität der überprüften Fakten. In dem Wikipedia-Artikel “Testabdeckung” steht daher etwas sehr wichtiges:

Da eine hohe Codeabdeckung auch mit Tests erreicht werden kann, die nichts überprüfen, hat die Codeabdeckung für die Qualität der Tests eine nur eingeschränkte Aussagekraft.

Installation

Auf der Homepage des PyDev-Projektes befindet sich eine gute Beschreibung, so dass ich darauf nicht auch noch eingehen muss. Einen wichtigen Hinweis muss ich dabei aber noch geben. Fabio schreibt dort: “the integration is tested with version 3.4, so, this is the recommended version” Diese 3.4 habe ich fälschlich als Python-Version interpretiert und daher auch lange gesucht. Diese Versionsangabe bezieht sich aber auf das Paket “coverage”. Da es hier ab Version 4 eine Umstellung des Dateiformates gegeben hat, ist dies sozusagen die magische Grenze. Die Installation muss also mit dem folgenden Befehl erfolgen:

pip install "coverage < 4.0.0"

Bei mir funktioniert es auch mit der Version 3.7.1 von “coverage”. Um herauszufinden, welche Version installiert ist, kannst du auch das Tool “pip” in einer der folgenden Varianten verwenden:

pip list
pip list | grep coverage

Um “grep” zu verwenden, muss man sich entweder auf einem Linux-System bewegen, oder man installiert die “Unix Utilities” unter Windows.

Wenn alles wie unter der oben verlinkten Anleitung eingerichtet ist (insbesondere das Kreuzchen bei “enable code coverage for new launches”), dann sieht das Ergebnis nach einem Testrun zum Beispiel so aus:

code-coverage

Eine vollständige Testabdeckung bei der Kocher-Klasse, dafür 0 % bei der Kaffeemaschine selbst. Ein guter Anfang, aber eben nur ein Anfang. Das Handwerkszeug haben wir nun, jetzt geht es daran, die Kaffeemaschine mit echter Funktionalität zu versehen und diese natürlich auch sauber zu testen.

Ähnliche Artikel:

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.

18 − 2 =