Emma
emma.sourceforge.net
Common Public License v1.0
Emma in Version 2.0.5312 vom 12.06.2005
27.10.2010
Emma ist ein Werkzeug das hilft, die Anweisungsüberdeckung in Java-Quellcode anzuzeigen. Dabei arbeitet man von der Kommandozeile oder von einem Ant-Skript aus. Grafische Entwicklungsumgebungen wie Eclipse werden nicht direkt unterstützt.
Emma ist dann das richtige Werkzeug, wenn in sehr großen Projekten mittels Ant die Anweisungsüberdeckung automatisiert und effizient erfasst werden soll oder in Projekten, in denen ein Entwicklungswerkzeug zum Einsatz kommt, dass keine Unterstützung für die Anzeige der Überdeckung hat. Hier ist es schnell möglich, mit wenigen Befehlen auf der Kommandozeile die Überdeckung durch die Testfälle aufzuzeigen. Soll allerdings in Projekten mit einer moderaten Größe und aus einer IDE wie Eclipse heraus die Überdeckung angezeigt werden, ist Emma zu unkomfortabel in der Handhabung. Hier ist man mit Plugins für die jeweilige Entwicklungsumgebung besser bedient.
Zeigt die Anweisungsüberdeckung (welche Teile des Programms ausgeführt wurden) an und überprüft so die Testfälle auf ihre Vollständigkeit.
Emma kann direkt von der Kommandozeile aus ausgeführt werden oder mit Ant automatisiert werden.
Es ist keine Installation notwendig. Es muss nur das Paket von der Emma Homepage heruntergeladen und entpackt werden. Danach ist Emma einsatzbereit.
Die Dokumentation ist komplett in Englisch. Auf der Emma-Seite finden sich eine "Quick-Start"-Anleitung (die auch als Readme dem Archiv beiliegt), eine recht ausführliche FAQ, eine Schritt-für-Schritt-Anleitung die den gesamten Funktionsumfang erfasst (auch diese Anleitung liegt dem Archiv bei) sowie einem Beispiel-Report.
Die "Quick-Start" Anleitung erklärt auf nur einer Seite, wie man von der Konsole aus die Überdeckung der ausgeführten Methoden anzeigt. Die Anleitung ist äußerst knapp, enthält aber alle Befehle die nötig sind, um eine HTML- oder Textdatei mit der Übersicht über die überdeckung zu erstellen.
Die FAQ-Liste gliedert sich in 2 Bereiche von Themen. Der eine Bereich umfasst Fragen zum Hintergrund von Emma und Anweisungsüberdeckung im Allgemeinen, der andere enthält Fragen und Antworten, die sich um die Nutzung von Emma drehen. Die Fragen sind recht ausführlich beantwortet und decken an sich das ab, was beim Einstieg in Emma an Fragen aufkommen könnten.
Die Schritt-für-Schritt-Anleitung umfasst eigentlich zwei getrennte Anleitungen. Einmal wird auf die Kommandozeilenfunktionalität von Emma eingegangen, in der anderen Anleitung wird beschrieben, wie sich Emma mit Ant automatisieren lässt. Dabei wird umfassend jeder Schritt erläutert, der notwendig ist, um mit Emma zu einem Ergebnis zu kommen. Angenehm fallen hier die vielen Beispiele auf die anhand von Code-Ausschnitten und den darauf zu erwartenden Ausgaben dem Nutzer Schritt für Schritt die Arbeitsweise und den Umgang mit Emma zeigen.
Die Anleitungen setzen ein gewisses Grundverständnis von Java, dem Testen von Software und dem Arbeiten mit Ant voraus, sind aber bei entsprechenden Vorkenntnissen schnell verstanden.
Die Projektseite wird nicht regelmäßig gepflegt. Die letzte Aktualisierung der Projektseite ist am 15.01.2006 geschehen.
Es existiert ein Supportforum auf SourceForge, in dem Fragen gestellt werden können. Da sich die Entwickler wahrscheinlich nicht mehr mit dem Projekt befassen, warten die meisten Anfragen vergeblich auf eine Antwort.
Um mit Emma arbeiten zu können sollte man wissen wie und warum Software getestet wird. Soll Emma zusätzlich in Ant-Skripte eingebunden werden, sollte auch hier schon ein gewisses Grundwissen vorhanden sein. Generell muss man sagen, dass Emma sich sicherlich nicht so einfach zugänglich präsentiert wie ein grafisches Programm, das direkt aus einer grafischen Entwicklungsumgebung heraus genutzt werden kann. Trotzdem ist der sichere Umgang mit Emma innerhalb weniger Stunden erlernt.
Durch die Einbindung in Ant lassen sich quasi alle Aufgabenbereiche die Emma abdeckt ohne weiteres menschliches Zutun abarbeiten. Die dabei erstellten Dateien müssen danach noch manuell abgearbeitet bzw. durchgelesen werden.
Die Automatisierung des Emma Frameworks gestaltet sich leicht mit Hilfe von Ant. Um Emma in Ant zu nutzen, müssen externe Tasks definiert werden.
Dies werden allerdings vom Hersteller bereitgestellt und können durch eine externe Bibliothek genutzt werden. Zudem bietet Emma eine gute Dokumentation, sodass der Einsteig in Emma mit Ant sehr leicht fällt.
Zur Einbindung der externen Task muss die build.xml Datei folgende Zeile beinhalten:
< taskdef resource="emma_ant.properties" classpathref="emma.lib" />
Der Classpath zeigt dabei auf das Verzeichnis in dem sich die beiden benötigten externen Bibliotheken namens emma.jar und emma_ant.jar befinden.
In dem Beispielprojekt wurde auf das bestehende Projekt QS-QS Bezug genommen. Beim Report kann auf verschiedene Typen zurückgegriffen werden, auf den Plain-Text, XML und auch HTML. Zudem kann der Überdeckungsgrad mit Hilfe von Filtern gesteuert werden. Diese ermöglichen nur bestimmte Klassen zu beachten oder aber eine Menge von Klassen zu ignorieren.
Eine Beispielautomatisierung ist hier zu finden.
Die Automatisierung mit Hilfe von emma konnte mit Maven nicht durchgeführt werden. Die Nutzung des Maven-Plugins emma konnte nicht realisiert werden. Die Dokumentation für die Awendung des Plugins ist auf der Projekt-Seite sehr kurz gehalten. Mit dem Bezug zum CSI-Projekt trat jeweils eine Fehlermeldung auf, die auf fehlende Daten hinwies: nothing to do: no runtime coverage data found in any of the data files
. Trotz weiteren Tests konnte der Fehler nicht weiter eingegränzt werden. Die Suche nach Lösungen über die FAQ und der Dokumentation führten zudem zu keinem Ergebnis.
Um Emma zu testen, wurde das QS-QS Beispielprogramm, welches auch für den Test mit EclEmma zum Einsatz kam, um ein Ant-Skript erweitert und Emma eingebunden. Danach wurde mit Emma die überdeckung der Aufrufe in der Main-Methode extrahiert. Die Programmlogik befindet sich im Ordner ./qsqs/ueberdeckungen, die Ausgabe von Emma in ./coverage.
[emma-ant-test.tar.gz]
Das Antskript wurde dabei der Anleitung entsprechend erweitert, damit folgende Anweisungen im Ant-Skript die Main-Methode aufrufen und die Überdeckung aufzeichnen.
<\target name="run" depends="init, Main (1)" description="runs the examples">
<\emmajava enabled="${emma.enabled}" libclasspathref="emma.lib" fullmetadata="yes" sourcepath="${src.dir}" classname="qsqs.ueberdeckungen.Main" classpathref="QS-QS-Testprogramm.classpath">
<\txt outfile="${coverage.dir}/coverage.txt"/>
<\xml outfile="${coverage.dir}/coverage.xml"/>
<\html outfile="${coverage.dir}/coverage.html"/>
<\/emmajava>
<\/target>
keine
Zurück zur KombiQu-Werkzeugübersicht
Zurück zur KombiQu-Hauptseite