Name

CodeCover

Homepage

http://www.codecover.org

Lizenz

Eclipse Public Licence (EPL)

Untersuchte Version

Version 1.0.0.8

Letzter Untersuchungszeitpunkt

25.10.2010

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. In Version 1.0.0.8 sind die Überdeckungskriterien QMOCoverage und SynchronizedStatementCoverage hinzugekommen, die jedoch noch nicht dokumentiert wurden.

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 schön 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 ggf. eine längere Einarbeitung. Hat man das Prinzip einmal verstanden, möchte man diese Funktionen nicht mehr missen. Ebenfalls besonders gut 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.

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:

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

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 mit Java Code-Beispielen und anhand von Bildern erklärt, wie sich das Programm verhält und wie es arbeitet. Im Tutorialbereich werden verschiedene HOWTO-Anleitungen zum Programm beschrieben. Auch diese Anleitungen sind sehr gut und übersichtlich gestaltet. Dabei werden folgende Bereiche abgedeckt: 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 lässt auf den ersten Blick keine Wüsche offen, es werden alle Einstellungen und Features anhand sehr guter Beispiele erklärt.

Wartung der Projektseite

Die Projektseite informiert über neue Versionen und enthält alles Nötige. Jedoch wurde die Dokumentation noch nicht passend zur neuesten Version des Tools geupdated.

Nutzergruppen und Support

Auf der Webseite ist ein Supportbereich eingerichtet, der ein FAQ und ein Forum bereit hält. Im FAQ Bereich werden bisher nur drei Probleme bzw. Fragen besprochen. Das Forum wird auf die zugehörige SourceForge-Projektseite verlinkt, wo ein kleines Forum eingerichtet wurde, in dem noch nicht so viele Diskussionen geführt wurden. In der Rubrik Kontakt hat man die Möglichkeit, den Entwicklern direkt eine Frage per E-Mail zu stellen.

Intuitive Nutzbarkeit

Die Nutzbarkeit des Eclipse-PlugIns ist sehr gut. Man hat die Wahl, ein neues Java-Projekt mit CodeCover zu testen, ein neues JUnit Projekt zu testen oder dieses in bestehende Projekte einzubauen. Um in einem Projekt CodeCover zu nutzen, klickt man mit der rechten Maustaste auf das Projekt und wählt "Eigenschaften". Im folgenden Fenster klickt man auf "CodeCover" und selektiert die Überdeckungsarten, die man für sein Projekt benötigt. Nachdem man das Projekt nun für CodeCover aktiviert hat, müssen die Klassen, welche in den Überdeckungstest mit einbezogen werden sollen möchte, aktiviert werden. Dafür klickt man mit der rechten Maustaste auf eine Klasse und setzt einen Haken im Kontextmenü auf "Use for Coverage Measurement". All diese Schritte sind nicht sehr intuitiv und für unerfahrene Nutzer eher schwierig nachzuvollziehen. Mit der sehr guten Dokumentation sollte das Einrichten jedoch kein Problem darstellen. Zusätzlich bietet CodeCover die Möglichkeit, das 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.
ANT
Die Automatisierung des CodeCover Frameworks mit Hilfe von ANT ist über externe Tasks möglich. Diese externen Tasks werden allerdings vom Hersteller mitgeliefert. Um diesen Task zu nutzen, muss die Datei build.xml um die folgende Zeile erweitert werden. Diese bindet die externe Bibliothek für den Task mit ein.< taskdef name="codecover" classname="org.codecover.ant.CodecoverTask" classpath="${lib}/codecover-ant.jar"/>
Der CLASSPATH zeigt dabei auf das Verzeichnis in dem sich das Jar-Archiv befindet. Bei dem Jar-Archiv handelt es sich um das gleiche Archiv, das zum Testen in Eclipse mit eingebunden werden muss. In dem Beispielprojekt wurden zwei CodeCover-Beispiele durchgeführt. Zum Einen wird der Abdeckungsgrad für die Main-Klasse und deren Aufrufe, zum Anderen auf Basis der JUnit-Testfälle berechnet. Somit stehen beide Abdeckungsgrade zur Verfügung.
Die Einarbeitung in die Thematik CodeCover mit Hilfe von Ant hat sich als schwer herausgestellt, da die Dokumentation in Richtung Ant nicht sehr umfangreich ist. Die aktuelle Aktivität des Forums bewegt sich auch in einem geringen Aktivitätsgrad. Zur Verfügung standen nur zwei Beispiel Build-Dateien für Ant.
Eine Beispielautomatisierung ist hier zu finden.
Maven
Eine Automatisierung der CodeCover Testfälle lässt sich mit Hilfe von Maven nicht bewerkstelligen. CodeCover stellt keine Maven-Plugins zur Nutzung zur Verfügung. Das versuchte Workaround über die konsolenbasierte Nutzung von CodeCover schlug auch fehl. Das Problem dabei war, die fehlende Möglichkeit auf dynamische Dateinamen der Coverage-Logs zu reagieren. Die Namen dieser Logs beinhalteten den Zeitstempel der Ausführung und sind somit nicht aus Maven zugreifbar. Somit ist die Nutzung automatischer CodeCover Szenario nicht mit Maven möglich.
Vergleich Ant und Maven
Da mit Maven keine Möglichkeit, besteht die Testfälle auszuführen, muss in diesem Fall auf Ant zurückgegriffen werden. Der Hersteller bietet für Ant einen externen Tasks zur Nutzung an. Dieser ist schnell in das Ant-Skript eingebunden und ermöglicht somit eine leichtere Steuerung durch Ant.

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 ist ein Rechtsklick auf die Startklasse des Projektes nö und unter "Run As" --> "Open Run" der zugehörige Dialog aufzurufen. 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" die jeweilige Session zu aktivieren.
Eventuell müssen dazu erst noch die Views im Menü unter "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 KombiQu-Werkzeugübersicht
Zurück zur KombiQu-Hauptseite