CodeCover
http://www.codecover.org
Eclipse Public Licence (EPL)
Version 1.0.0.8
25.10.2010
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.
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.
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ü "Help" --> "Install New Sofware" selektieren
- Im nächsten Dialogfenster auf "Add..." klicken und im erscheinendem Dialog folgendes Daten eintragen:
- Nun mit "Ok" bestätigen
- Danach "CodeCover" in der angezeigten Liste aktivieren und zweimal auf "Next" klicken
- Die Lizensbedingungen akzeptieren und auf "Finish" klicken
- Nach der Installation muss Eclipse
neu gestartet werden.
- Screenshot 1, Screenshot 2
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 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:
- 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 lässt auf den ersten Blick keine Wüsche offen, es werden alle Einstellungen und Features
anhand sehr guter Beispiele erklärt.
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.
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.
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.
Eine Automatisierung ist mit Ant-Skripten möglich, zur Analyse der Ergebnisse wird ein XML-Logfile generiert.
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.
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.
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 Bedigungsü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 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).
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:
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 KombiQu-Werkzeugübersicht
Zurück zur KombiQu-Hauptseite