MagicTest – Visuelles Testen mit Java

Testen gestern

Im Zeitalter vor den Test-Frameworks gab es grundsätzlich zwei Möglichkeiten, die erstellten Programme auf der Ebene von Unit-Tests zu testen:

  • Man überprüfte die Korrektheit mit dem Debugger, indem man die vom Programm unterhaltenen Variablen und Zustände während der Abarbeitung verfolgte.
  • Man fügte an den relevanten Stellen Trace-Statements ein, welche den Ablauf des Programms dokumentierten.

Beide Ansätze beruhen auf dem visuellen Vergleich durch den Entwickler – mit dem großen Nachteil, dass das Testen so nicht automatisierbar ist.

MagicTest

MagicTest macht nun diesen visuellen Ansatz automatisierbar. Die Idee ist, dass der Entwickler die visuelle Prüfung nur das erste Mal manuell durchführen muss – anschließend soll dies das Test-Framework automatisch tun. Damit das möglich ist, muss das Test-Programm während der Ausführung die notwendigen Informationen für diese Prüfung ausgeben. Mit ein bisschen Instrumentierungs-Magie auf Bytecode-Ebene, welche wir mit der Annotation @Trace aktivieren, müssen wir dann nur noch die eigentlichen Methoden-Aufrufe schreiben:

@Trace
public static void testJoin() {
   join("Hello", "MagicTest");
   join("Hello", null);
}

Wenn wir den Test nun ausführen, schickt der instrumentierte Test-Code die gewünschten Informationen an das Test-Framework, welches diese sammelt und als Datei speichert. Nach Beendigung des Tests vergleicht das Test-Framework die Daten der aktuellen Ausgabe mit der gespeicherten Referenz-Ausgabe. Wenn die Ausgaben übereinstimmen, ist der Test erfolgreich.

MagicTest zeigt das Ergebnis der Test-Ausführung in einem übersichtlichen HTML-Report (Abb. 1), welcher unserem ursprünglichen Testplan sehr ähnlich sieht.

Abb. 1: Report nach Ausführung des Tests
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.