Name

CodeCover

Homepage

http://www.codecover.org

Lizenz

Eclipse Public Licence (EPL)

Untersuchte Version

Version 1.0.0

Letzter Untersuchungszeitpunkt

25.07.2009

Kurzbeschreibung

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.

Fazit

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.

Einsatzgebiete

CodeCover ist ein Programm zum Testen von Überdeckungen. Das Tool wird hauptsächlich von Testern und Entwicklern genutzt. Es berechnet verschiedene Überdeckungsmaße.

Einsatzumgebungen

CodeCover kann auf drei verschiedene Arten genutzt werden:

Installation

Um CodeCover als Eclipse-PlugIn zu nutzen, wird es über den Eclipse-Update-Mechanismus installiert. Folgende Schritte sind dabei zu beachten:

Dokumentation

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:
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: 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.

Wartung der Projektseite

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.

Nutzergruppen und Support

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.

Intuitive Nutzbarkeit

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.

Automatisierung

Eine Automatisierung ist mit Ant-Skripten möglich, zur Analyse der Ergebnisse wird ein XML-Logfile generiert.

Einführendes Beispiel

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:

CodeCover aktivieren


Sollen nur bestimmte Dinge abgedeckt werden, hat man die Möglichkeit, auch nur einzelne Überdeckungen auszuwählen. Beschreibung der einzelnen Überdeckungsarten:
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:

Kontext Menü Klassen freischalten

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).

Run Dialog CodeCover

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:

Run Dialog CodeCover

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:

Ergebnis nach einem Testlauf

Die Coverage View zeigt die Überdeckungen der einzelnen Klassen in Prozent an:

Coverage View

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:

Boolean Analyzer

In der "Correlation View" werden die einzelnen Tests in einer Matrix angeordnet und je nach Testerfolg eingefärbt:

Correlation View

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:

Export der Testdateien

Im nächsten Fenster wählt man "Coverage Export" und klickt auf "Next":

Export der Testdateien

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.

Export der Testdateien

Detaillierte Beschreibung

Siehe Dokumentationen und Tutorials auf der Webseite des Herstellers.

Literatur

keine

Zurück zur JSF-Werkzeugübersicht
Zurück zu den Werkzeugen
Zurück zur CSI-Hauptseite