Coverlipse
http://coverlipse.sourceforge.net/index.php
Common Public Licence (CPL)
0.9.6 vom 14.02.2009
16.03.2010
Einfacher Anweisungsüberdeckungstest, der für gegebene JUnit-Tests in Eclipse überprüft, welche Anweisungen überdeckt werden, weiterhin ist überprüfbar, ob Zuweisungen im späteren Code genutzt werden.
Das Werkzeug ermöglicht den einfachen Einstieg in die Nutzung von Anweisungsüberdeckungen und ist sicherlich einen Blick wert. Es wird anscheinend nicht weiterentwickelt und kann keine anderen Überdeckungen berechnen. Aus diesem Grund sind die anderen auf der Werkzeug-Seite genannten Werkzeuge vorzuziehen.
Durch Tests erreichte Anweisungsüberdeckung messen.
Plugin für Eclipse
Einfache Installation über Eclipse-Updatemechanismus.
Help -> Software Updates -> Find and Install -> http://coverlipse.sf.net/update als Seite
hinzufügen.
[16.03.10] Die Installation über den Update-Mechanismus scheint nicht mehr zu funktionieren, die Installation bricht mit einer Fehlermeldung ab.
Der zweite Weg, direkt im Eclipse-Verzeichnis die Projektdatei auszupacken,
funktioniert bei Eclipse 3.1, aber nicht mehr ab Eclipse 3.3.
Generell sind die wesentlichen Funktionalitäten kurz beschrieben, die Integration in Eclipse macht das Werkzeug sehr einfach bedienbar. Die Dokumentation beschreibt die typische Nutzung und einige wenige Fragen. Das genaue Konzept des Werkzeugs und etwaige Hintergründe sind nur angedeutet.
Bis zum letzten Eintrag vom 14.02.2009 nette kleine Seite, die wesentliche Entwicklungsschritte aufzeigt. Seitdem wird das Werkzeug anscheinend nicht weiterentwickelt.
E-Mail Adresse des Autors ist angegeben, keine Nutzergruppe
Das Werkzeug erzeugt einen eigenen Eintrag in den Run-Menüs von Eclipse. Man kann bei der Ausführung von JUnit-Tests wählen, ob man sie mit Coverlipse ausführen möchte oder nicht. Die Bedienung ist damit einfach und intuitiv.
keine Unterstützung
Getestet werden soll folgendes Programm, dessen Methoden nur verschiedene Probleme zeigen sollen, wie mehrere Befehle in einer Zeile, if ohne else und zusammengesetzte Bedingungen. [Programmcode]
package ueberdeckung;
/* Klasse zur Spielerei mit verschiedenen Überdeckungsvarianten
*/
public class Ueberdeckung {
public int mach1(int wert){ // schlechter Programmstil
int ergebnis=wert;
if(wert>0) ergebnis+=wert; //zwei Anweisungen
else
ergebnis=0;
return ergebnis;
}
public int mach2(int wert){ // zusammengesetzte Bedingungen
int ergebnis=0;
if(wert%2==0 || wert>42)
ergebnis++;
return ergebnis;
}
public int mach3(int wert){ // zusammengesetzte Bedingungen
int ergebnis=0;
if(wert%3==0 && wert%4==0)
ergebnis++;
return ergebnis;
}
public static void main(String[] args) {
Ueberdeckung u= new Ueberdeckung();
System.out.println(u.mach1(2)+" "+u.mach2(3)+" "+u.mach3(4));
}
}
Es werden folgende JUnit 3-Tests durchgeführt, die zwar jede Methode testen, allerdings nicht alle Anweisungen ausführen und in zusammengesetzten Bedingungen nicht alle Booleschen Teilformeln nach wahr oder falsch auswerten. [Programmcode]
package ueberdeckung;
import junit.framework.TestCase;
public class UeberdeckungTest extends TestCase {
public void test1(){
Ueberdeckung u= new Ueberdeckung();
assertTrue(u.mach1(-42)==0);
}
public void test2(){
Ueberdeckung u= new Ueberdeckung();
assertTrue(u.mach2(2)==1);
}
public void test3(){
Ueberdeckung u= new Ueberdeckung();
assertTrue(u.mach3(6)==0);
}
}
Die Ausführung wird z. B. über das Run-Menü gestartet:
Nach der Ausführung des Tests mit Coverlipse erhält man folgendes Bild:
Man erkennt, dass zeilenweise geprüft wurde, ob die Zeile durchgeführt wurde. Mehrere Befehle in einer Zeile werden nicht erkannt. Details der Booleschen Bedingungen werden nicht betrachtet. Wie erwartet, wird die main-Methode nicht ausgeführt. Bis auf das Problem mit mehreren Befehlen in einer Zeile funktioniert der Anweisungsüberdeckungstest sehr gut. Weiterhin erhält man in einem zu Coverlipse gehörenden weiteren Eclipse-View eine Statistik mit den Überdeckungswerten pro Klasse, die aber nicht weiter auf Methodenebene konkretisiert werden.
In dem View gibt es rechts oben (im Bild zweiter Knopf von links) die Möglichkeit, von "Block Coverage" auf "All Uses Coverage" umzustellen. Hierbei wird für jede Variable, die in einer Wertzuweisung auf der linken Seite steht, geprüft, ob diese Wertzuweisung einen Einfluss auf das Ergebnis hatte. Im folgenden Beispiel sieht man, dass der Parameter wert (Spezialfall einer Zuweisung beim Methodenaufruf) Einfluss auf die Zeilen 8 und 9 bei der Ausführung hatte. Die Zuweisung an die Variable ergebnis in der Zeile 9 hat keinen Einfluss in den Tests gehabt, da ergebnis zwar einen anderen Wert erhalten kann (uncovered usage), hierbei der ursprüngliche Wert aus der Zeile 9 aber keine Rolle spielt.
[Keine: etwas genauere Beschreibung auf der Seite des Werkzeugs.]
keine
Zurück zur KombiQu-Werkzeugübersicht
Zurück zur KombiQu-Hauptseite