Hinter der Einfachheit dieses Verfahrens verbirgt sich der komplexe Prozess des Hochskalierens auf übliche Codebasen. Agitator verpackt diesen komplexen Vorgang in einer einfachen Oberfläche und vielen Automatismen zur Handhabung der Testgenerierung, ohne dass der Anwender eingreifen muss, wobei man aber jederzeit eingreifen und Änderungen vornehmen kann. So wird beispielsweise das Erstellen der Rohdaten für den Testprozess von Factories übernommen. Dabei werden zunächst standardmäßige Factories erstellt, so dass man für einen nativen Int-Parameter eine Factory erhält, die eine zufällige Auswahl aus Int-Werten generiert. Die Factories können natürlich auch Klassen-Instanzen zum Testen erzeugen, einschließlich der automatischen Generierung von Dummy-Objekten auf der Basis existierender Typen, unter Nutzung von verschachtelten Factories zur Erzeugung von Parameterwerten für diese Dummy-Objekte. Will man die verwendete Factory wechseln oder mit einem anderen Generator testen, kann man eine neue Factory zuweisen, indem man die Bereiche ändert oder sie von einem Iterator oder wahllos von einem Array zu einem anderen zieht, so dass zufällige Instanzen einer Klasse erzeugt werden. Abgerundet wird das Ganze durch spezielle Factories, die zum Beispiel Servlet-Sessions, Anfragen und Antworten generieren.
Die Beobachtungen werden in den Vermerken von Agitator dargestellt, die einem Booleschen Ausdruck gleichen, dabei aber Funktionen wie @PRE(x), was dem Wert von „x“ vor der Durchführung des Tests entspricht, und @RETURN umfassen, was den Wert angibt, der vor der getesteten Methode ausgegeben wurde. Agitator muss diese Beobachtungen aber nicht zwangsläufig generieren, man kann auch seine eigenen Beobachtungsausdrücke eingeben, was für eine testgesteuerte Programmierung entscheidend ist. Man kann eine „Shell“-Methode schreiben, die als zutreffend definierten Beobachtungen von Hand eingeben und dann die Prüfreihe durchführen, um festzustellen, wo die Annahmen nicht zutreffen. Dies macht man so lange, bis man den korrekten Code erstellt hat, um diese Tests zu bestehen. Wenn eine Behauptung nicht zutrifft, kann man einen Snapshot des Tests durchsehen, der jede aufgetretene Iteration aufzeigt und in dem man nachsehen kann, welche Werte eingespeist wurden. Die Testabdeckung spielt beim Testen eine wichtige Rolle und Agitator fügt die gewonnenen Abdeckungsdaten direkt in den Editor ein, wobei auch die Abdeckungs-Tags auf der linken Seite hinzugefügt werden, aus denen hervorgeht, wie gut die einzelnen Zeilen vom Test abgedeckt werden. Dabei werden getestete Pfade grün markiert und nicht getestete Pfade rot. Auf diese Weise stellt Agitator die Ergebnisse für Test und Abdeckung auf einen Blick dar, wobei nicht oder unzureichend getesteter Code markiert wird, so dass man ganz leicht Tests für diese Auslassungen erstellen kann.
Testen leicht gemacht: Kompletter Überblick über Code-Abdeckung und Testergebnisse beim Programmieren. |
Neben diesen grundlegenden Verfahren kann Agitator auch mit Experts erweitert werden, wodurch man ein Projekt mit einer Reihe selbst erstellter Standardregeln durchgehen kann. Hat man beispielsweise festgelegt, dass alle mit „do“ beginnenden Methoden in einem Bereich eine Ganzzahl ausgeben sollen, kann man einen Expert hinzufügen, der den Methodennamen mithilfe eines regulären Ausdrucks ergänzt, und dann eine Behauptung erstellen, um diese Regel anzuwenden. Sobald Agitator auf eine solche Regel trifft, markiert es diese in der Experts-Ansicht und im Editor und fragt den Anwender, ob er die zugeordneten Beobachtungen anwenden will. Agitator bietet einige fertige Experts für J2EE und Struts, was zwar ganz praktisch ist, aber nicht so gut wie die Kernfunktionalitäten integriert ist. Zudem ist die Experts-Anwenderschnittstelle ziemlich umständlich aufgebaut. Dennoch bietet die Experts-Funktion ein großes Potenzial zur Umsetzung teamübergreifender Programmiervorgaben.
Agitator ist ein leistungsfähiges Tool, das die Entwicklung und Dokumentierung von Tests tief im Programmierzyklus verankert. Trotzdem ist Agitator natürlich kein Wundermittel: Wendet man es in einem bereits bestehenden Projekt an, muss man erst festlegen, welche Beobachtungen als Behauptungen übernommen werden sollen, und selbst dann hat man erst eine grobe Vorlage für die Standardtests. Am besten führt man Agitator in kleinen Schritten ein, indem man zunächst versucht, eine hohe Abdeckung in kleinen Bereichen zu erreichen. Bei neuen Projekten kann sich Agitator aufgrund seiner Unterstützung einer testgesteuerten Programmierung als ganz entscheidendes Tool erweisen. Der einzige Nachteil könnten die Kosten sein, die sich im Monat auf mindestens 365 Euro pro Entwickler belaufen, einschließlich des Supports für die Aboversion, beziehungsweise 3462 Euro pro Arbeitsplatz plus Support für 10 Kauflizenzen. Dafür wird man in jedem Fall von Agitator begeistert sein, von dem es leider keine Einstiegsversion zur Probe gibt. Wenn man erst einmal mit diesem Tool gearbeitet hat, wird man seine Tests nie mehr komplett manuell durchführen wollen.
Neueste Kommentare
Noch keine Kommentare zu Automatische Tests von Java-Code mit Agitator 3.0
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.