Suche

MagicTest – Visuelles Testen mit Java

Komplexe Tests

Wie wir gesehen haben, müssen beim traditionellen Ansatz die erwarteten Resultate in den Test-Code integriert werden. Während bei einfachen statischen Funktionen offensichtlich ist, was geprüft werden soll (nämlich das Resultat), ist dies bei komplexen Objekten, auf welchen Instanz-Methoden aufgerufen werden, schnell nicht mehr so klar.

Wenn eine Methode beispielsweise ein XML-Element manipuliert, muss der Entwickler beim traditionellen Ansatz grundsätzlich alle Element-Eigenschaften wie Attribute, Namespaces und Kind-Elemente mit Assertions prüfen. Es kann deshalb gut sein, dass die Prüfung eher noch aufwändiger ist, als die eigentliche Manipulation des Elements.

Der visuelle Ansatz von MagicTest vereinfacht das Prüfen der gewünschten Eigenschaften entscheidend. Durch die Ausgabe der gewünschten Daten werden diese automatisch in den Test mit einbezogen. Für unser Beispiel ist die einfachste Lösung, das XML-Element als Text auszugeben.

Die Stärken des visuellen Ansatzes sind ebenfalls sichtbar, wenn große Datenmengen geprüft werden müssen. Betrachten wir als Beispiel eine Methode, die Informationen aus einer Datenbank abfragt. Um die Korrektheit der Methode zu garantieren, müssen die zurückgegebenen Daten geprüft werden. Bei der Verwendung von MagicTest brauche ich nur die Resultatdaten auszugeben, und schon sind diese in den Test-Report integriert.

Unterhalt von Tests

Einen Aspekt des Testens haben wir bisher außer Acht gelassen: den Unterhalt. Wie der normale Code müssen Tests nicht nur erstellt, sondern anschließend auch unterhalten werden. Unglücklicherweise bietet der traditionelle Assertion-basierte Ansatz hier keine wirkliche Unterstützung. Ein Problem ist, dass die erwarteten Resultate mit im Testcode gespeichert sind. Es kann also sein, dass die eigentliche Änderung nur an einer einzigen Stelle vorgenommen werden muss, dass aber anschließend noch alle in den Test-Methoden enthaltenen Testresultate angepasst werden müssen.

Ein zweites Problem ist, dass fehlgeschlagene Assertions die Abarbeitung des Tests stoppen: Wenn ich eine Anpassung vergesse oder sie falsch mache, bricht die Test-Methode mit einer Exception ab, und ich weiß nicht, ob der Rest meiner Anpassungen korrekt war.

Auch hier kann MagicTest helfen: Nachdem die eigentliche Änderung gemacht wurde, wird der Test erneut ausgeführt. Die Auswirkung der Änderungen werden nun alle übersichtlich im HTML-Report dargestellt. Damit die gemachten Änderungen einfach erkennbar sind, werden sie grafisch ausgezeichnet, wie dies von Diff-Tools bekannt ist. Abbildung 2 zeigt ein Beispiel.

Abb. 2: Report, welcher alle Änderung als Diff anzeigt
Kommentare

Schreibe einen Kommentar

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