CodeCover
http://www.codecover.org
Eclipse Public Licence (EPL)
Version 1.0.0
25.07.2009
CodeCover ist ein Überdeckungstool für die Programmiersprachen Java und COBOL. Die Software unterstützt Statement-, Branch-
und Schleifenabdeckungen. Das Programm kann auf zwei verschiedene Arten genutzt werden, als Eclipse-PlugIn oder als Standalone-Anwendung
für Linux und Windows. Zusätzlich verfügt es über ein CLI Interface zur Nutzung der Konsole und ein Ant Interface für
die Integration in existierende Build-Prozesse. CodeCover ermöglicht eine volle Integration von JUnit, eine Live-Anzeige für eine
manuelle Testfallerkennung, einen Boolean Analyzer und eine Korrelationsmatrix zum Finden und Vergleichen von Testfällen.
CodeCover ist ein sehr nützliches Tool, welches eine Quellcodeanalyse mit Hilfe von Testfällen ermöglicht und die abgedeckten
bzw. nicht abgedeckten Programmteile farblich im Quelltext hervorhebt.
Schleifen, die mehrfach durchlaufen werden, erhalten hierbei eine gesonderte Farbcodierung. Durchlaufene Teile des Codes werden grün
markiert, alle nicht durchlaufenen Teile rot.
Besonders effektvoll in CodeCover sind die zahlreichen Analysemöglichkeiten und Darstellungen der absolvierten Überdeckungen, welche
nach einem Testlauf grafisch aufbereitet werden. Jedoch sind einzelne Darstellungen auf den ersten Blick verwirrend und benötigen gegebenenfalls eine
längere Einarbeitung. Ist das Prinzip einmal verstanden, möchte man diese Funktionen nicht mehr missen. Ebenfalls gelungen
sind die Dokumentationen und Tutorials auf der Webseite des Herstellers. Mit diesen Anleitungen und Erklärungen kann sehr schnell und
produktiv mit CodeCover gearbeitet werden.
Der Einsatz von CodeCover mit JSFUnit funktioniert nicht ohne Weiteres.
Bei den Versuchen konnte CodeCover bei Testdurchläufen keine Überdeckung feststellen, was vermutlich damit zusammenhängt,
dass das Cactus Framework mehrere Instanzen von Testklassen anlegt und die eigentlichen Tests serverseitig ausführt.
CodeCover ist ein Programm zum Testen von Überdeckungen. Das Tool wird hauptsächlich von Testern und Entwicklern genutzt. Es berechnet
verschiedene Überdeckungsmaße.
CodeCover kann auf drei verschiedene Arten genutzt werden:
- PlugIn für Eclipse
- CLI Interface
- Standalone Batch und Ant Unterstützung
Um CodeCover als Eclipse-PlugIn zu nutzen, wird es über den Eclipse-Update-Mechanismus installiert. Folgende Schritte
sind dabei zu beachten:
- Eclipse starten
- Im Hauptmenü "Hilfe" --> "Software-Updates" --> "Suchen und installieren" selektieren
- Im nächsten Dialogfenster "Neue Features installieren" auswählen und auf "weiter" klicken.
- Hier muss eine neue Update Seite hinzugefügt werden. Dafür muss auf den Button "Neue ferne Seite"
geklickt und folgendes hinzugefüg werden:
- Nach dem Schließen des Fensters wird das Update heruntergeladen und installiert. Nach der Installation muss Eclipse
neu gestartet werden.
- Für die Standalone-Installation von CodeCover wird auf Linux Systemen das Shell Skript codecover.sh und auf Windows Systemen
die Batch-Datei codecover.bat ausgeführt
Die gesamte Dokumentation von CodeCover befindet sich auf der Webseite des Herstellers und liegt in Englisch vor. Der Aufbau der Dokumentation
ist sehr gut und unterteilt sich in folgende Teilbereiche:
- Installation
- Referenzen
- Tutorials
Alle drei Themengebiete sind sehr ausführlich beschrieben und werden mit Screenshots noch verständlicher dargestellt.
Die Installation wird anhand einer Bildanleitung plus Erklärung sehr gut beschrieben und sollte keinerlei Probleme darstellen.
Die angegebenen Referenzen sind sehr gut und ausführlich beschrieben, dabei werden die Bereiche CLI, Eclipse-Plugin, Measurement unter
Java und Reports abgedeckt und lassen keinerlei Fragen offen. In jedem dieser Bereiche wird anhand von Java Code-Beispielen und Bildern
erklärt, wie sich das Programm verhält und wie es arbeitet.
Im Tutorial Bereich werden verschiedene HOWTO-Anleitungen zum Programm beschrieben. Auch diese Anleitungen sind sehr gut und übersichtlich
gestaltet. Die Tutorials decken folgende Bereiche ab:
- HOWTO, Kurzer Einstieg und Überblick
- HOWTO, CLI
- HOWTO, CodeCover mit Ant
- HOWTO, CodeCover mit JUnit
Auf der Webseite wird zusätzlich ein FAQ- und Forenbereich angeboten, wo eventuelle Fragen und Probleme besprochen werden können.
Die Dokumentation ist sehr gut gelungen und es werden alle Einstellungen und Features
anhand sehr guter Beispiele erklärt.
CodeCover lag zum Untersuchungszeitpunkt in der Version 1.0.1.0 vor. Das Projekt begann als eine studentische Arbeit der Uni Stuttgart und wird nun weiterentwickelt und gepflegt.
Auf der Webseite ist ein Support Bereich eingerichtet, der ein FAQ und ein Forum bereit hält.
Im FAQ Bereich wurden zum Untersuchungszeitpunkt nur drei Probleme bzw. Fragen thematisiert. Das Forum befindet sich auf der zugehörigen "SourceForge" Projektseite. In der Rubrik Kontakt gibt es
die Möglichkeit, den Entwicklern direkt eine Frage per E-Mail zu stellen.
Die Nutzbarkeit des Eclipse-Plugin ist sehr gut. Es gibt die Wahl ein neues Java-Projekt mit CodeCover zu testen, ein neues JUnit bzw. JSFUnit Projekt zu
testen oder dieses in bestehende Projekte einzubauen. Um in einem Projekt CodeCover zu nutzen, muss mit der rechten Maustaste auf das
Projekt geklickt und "Eigenschaften" gewählt werden. Im folgenden Fenster können im "CodeCover" Menü die für das Projekt benötigten
Überdeckungsarten gewählt werden.
Nachdem CodeCover nun für das Projekt aktiviert ist, müssen die Klassen, welche in den Überdeckungstest mit einbezogen
werden sollen, ausgewählt werden. Dafür klickt man mit der rechten Maustaste auf eine Klasse und setzt einen Haken im
Kontextmenü auf "Use for Coverage Measurement".
Diese Schritte sind nicht sehr intuitiv und für unerfahrene Nutzer eher schwierig nachzuvollziehen, jedoch erleichtert die gute Dokumentation das Einrichten.
Zusätzlich bietet CodeCover die Möglichkeit,
das zu untersuchende Programm direkt auszuführen, um die Überdeckungen zu ermitteln. Dies kann auch auf einzelne Pakete beschränkt werden.
Eine Automatisierung ist mit Ant-Skripten möglich, zur Analyse der Ergebnisse wird ein XML-Logfile generiert.
Als einführendes Beispiel wird ein Programm verwendet, das verschiedene IF-Bedingungen und Zahlenberechnungen ausführt
(Fakultät und Fibonacci Zahlen).
Für dieses Programm wurden entsprechende JUnit Tests geschrieben. CodeCover nutzt diese JUnit-Tests für das Testen der
Überdeckungen. Folgende Java Klassen wurden für den Test verwendet:
Diese können hier auch als Archiv heruntergeladen werden.
Nach dem Start von Eclipse müssen die Eigenschaften des Projektes gewählt werden, um CodeCover für das Projekt freizuschalten.
Dazu klickt man auf CodeCover und selektiert auf der rechten Seite "Enable CodeCover" und die gewünschten Überdeckungskriterien:
Sollen nur bestimmte Dinge abgedeckt werden, hat man die Möglichkeit, auch nur einzelne Überdeckungen auszuwählen.
Beschreibung der einzelnen Überdeckungsarten:
- Branch Coverage - Zweigüberdeckung, durchläuft alle Zweige in einem Programm.
- Condition Coverage - Bedingungsüberdeckung, durchläuft einzelne Teilbereiche eines Programms, d.h. es werden die einzelnen
Bedingungen / Entscheidungen im Programm getestet. Dabei unterscheidet man einfache, mehrfache und minimale Bedingungsüberdeckungen.
- Loop Coverage - Schleifenüberdeckung, durchläuft nur Schleifen im Programm.
- Statement Coverage - Anweisungsüberdeckung, alle Anweisungen im Programm werden durchlaufen.
Als nächstes müssen die Klassen ausgewählt werden, die mit CodeCover getestet werden sollen. Dazu werden die entsprechenden
Klassen angeklickt und mit der rechten Maustaste das Kontextmenü aufgerufen. Im Kontextmenü muss ein Haken bei "Use for Coverage
Measurement" gesetzt werden:
Nach diesen Schritten sind das Projekt und die Klassen für CodeCover eingerichtet. Als nächster Schritt wird eine RUN-Datei angelegt.
Hierzu kann, per Rechtsklick auf die Startklasse des Projektes über "Run As" --> "Open Run", der zugehörige
Dialog aufzurufen werden. In diesem Fenster wird eine Startdatei für "CodeCover Measurement for JUnit" angelegt (siehe nachfolgendes Bild).
Nach dem Testdruchlauf ist es möglich, in der View "TestSessions" diejenigen Sessions auszuwählen, die für die Auswertung der Überdeckungstests berücksichtigt werden sollen.
Falls die CodeCover Views nicht sichtbar sind, können sie im Menü "Window" -> "Show View" -> "Other" unter
CodeCover aktiviert werden:
Nachdem die Session ausgewählt wurde, färbt sich der Quellcode entsprechend der Ergebnisse grün oder rot. Grün steht für
erfolgreich durchlaufen und getestet. Rote Bereiche wurden im Test nicht abgedeckt:
Die Coverage View zeigt die Überdeckungen der einzelnen Klassen in Prozent an:
Im "Boolean Analyzer" können die einzelnen Bedingungen der Klassen auf ihre Wahrheitswerte nachträglich getestet werden.
Auf dem Bild ist erkennbar, dass mit dem "Boolean Analyzer" eine UND Verknüpfung in einem bestimmten Programmteil getestet wurde:
In der "Correlation View" werden die einzelnen Tests in einer Matrix angeordnet und je nach Testerfolg eingefärbt:
CodeCover bietet die Möglichkeit, die Tests und deren Ergebnisse als XML-File zu exportieren. Dazu sind folgende Schritte nötig:
Rechtsklick auf das Projekt und auf "Export" klicken:
Im nächsten Fenster wählt man "Coverage Export" und klickt auf "Next":
Im letzten Fenster wählt man das entsprechende Projektergebnis aus, gibt den Speicherort an und klickt auf "Finish".
Die Ergebnisse werden in einem XML-File auf der Festplatte gespeichert und können nachträglich erneut in Eclipse geladen werden.
Siehe Dokumentationen und Tutorials auf der Webseite des Herstellers.
keine
Zurück zur JSF-Werkzeugübersicht
Zurück zu den Werkzeugen
Zurück zur CSI-Hauptseite