Name

Coverlipse

Homepage

http://coverlipse.sourceforge.net/index.php

Lizenz

Common Public Licence (CPL)

Untersuchte Version

0.9.6 vom 14.02.2009

Letzter Untersuchungszeitpunkt

16.03.2010

Kurzbeschreibung

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.

Fazit

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.

Einsatzgebiete

Durch Tests erreichte Anweisungsüberdeckung messen.

Einsatzumgebungen

Plugin für Eclipse

Installation

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.

Dokumentation

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.

Wartung der Projektseite

Bis zum letzten Eintrag vom 14.02.2009 nette kleine Seite, die wesentliche Entwicklungsschritte aufzeigt. Seitdem wird das Werkzeug anscheinend nicht weiterentwickelt.

Nutzergruppen und Support

E-Mail Adresse des Autors ist angegeben, keine Nutzergruppe

Intuitive Nutzbarkeit

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.

Automatisierung

keine Unterstützung

Einführendes Beispiel

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:
Startknopf für Coverlipse

Nach der Ausführung des Tests mit Coverlipse erhält man folgendes Bild:
Anzeige des Überdeckungsergebnisses für das Beispiel

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.
Anzeige des Überdeckungsergebnisses für das Beispiel
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.

Anzeige des All-Uses-Ergebnisses für das Beispiel

Detaillierte Beschreibung

[Keine: etwas genauere Beschreibung auf der Seite des Werkzeugs.]

Literatur

keine

Zurück zur KombiQu-Werkzeugübersicht
Zurück zur KombiQu-Hauptseite