Marathon ist ein Tool zum Testen von grafischen Benutzeroberflächen, basierend auf Java Swing. Bei diesem Tool muss der Tester keinen Testcode schreiben, sondern es kann mit Hilfe des Recorders die Nutzerinteraktion auf der grafischen Benutzeroberfläche aufgenommen werden. Während des Aufnahmemodus besteht die Möglichkeit, sogenannte Assertions einzufügen, um zu überprüfen, ob eine Aktion auf der Oberfläche korrekt ausgeführt wurde. Marathon speichert das aufgenommene Szenario als JRuby oder Jython Code.
Marathon ist ein sehr gutes Programm, für ein schnelles, effektives und automatisiertes Testen kleinerer bis mittlerer GUI-Projekte. Ein sehr großer Vorteil ist der Skript-Recorder, mit dem Nutzerinteraktionen auf der Oberfläche aufgezeichnet werden können. Während der Aufnahmephase können einfach Überprüfungen per Mausklick eingefügt werden, welche Eingaben oder Änderungen am UI verifizieren und auf Korrektheit überprüfen. Es müssen keine Tests von Hand implementiert werden, was einen Vorteil für eher unerfahrene Tester bedeutet. Mit Marathon lassen sich schnelle und gute Testergebnisse erzielen, da die Skripte bequem durch Mausklicks zusammengefügt werden können. Die Entwicklungs- und Testumgebung von Marathon ist sehr strukturiert. Das Layout ist an bekannte Entwicklungsumgebungen angelehnt. Ein weiterer Pluspunkt ist, dass aufgenommene Skripte nachträglich von Hand mit der Programmiersprache JRuby bzw. Jython verändert und ergänzt werden können. So ist es nicht notwendig, bei Änderungen das komplette Testszenario mit dem Skript-Recorder erneut aufzuzeichnen, stattdessen kann das Skript manuell angepasst werden. Bei Tests mit der GUI aus dem Marathon + Emma Beispiel gibt es einige kleinere Probleme, die Bedienung von angepassten Swing Elementen (z.B. JTable mit JComboBox als Zell-Editor) aufzuzeichnen. Abhilfe schafft teilweise der neue "raw" Aufzeichnungsmodus, der mehr Details aufzeichnet und die manuelle Nachbearbeitung des Testfalls.
Marathon wird von Testern und Entwicklern zum Testen von grafischen Benutzeroberflächen verwendet. Solche Tools eignen sich besonders gut für oft zu wiederholende Tests, die ein häufiges Klicken auf Buttons, Menüs und andere grafische Elemente erfordern. Der Computer kann diese Tests automatisch abarbeiten und ist wesentlicher schneller als ein Mensch, der die Maus oder Tastatur bedient. Mit Marathon muss kein handgeschriebener Testcode implementiert werden. Der Skript-Recorder zeichnet Nutzerinteraktionen auf und speichert diese als JRuby bzw. Jython Quellcode. Einmal aufgenommene Tests lassen sich dann beliebig oft abspielen.
Marathon bietet zum Testen von grafischen Benutzeroberflächen eine eigene Entwicklungs- und Testumgebung. Der Aufbau der Umgebung ist an gängige Entwicklungsumgebungen angelehnt.
Die Installation von Marathon ist sehr einfach. Es muss lediglich das komprimierte Verzeichnis an einen beliebigen Ort auf der Festplatte entpackt werden. In diesem Hauptverzeichnis befindet sich zum Starten von Marathon ein Shell-Skript für Linux und eine Batch-Datei für Windows Betriebssysteme. Soll Marathon von der Kommandozeile aus ausführbar sein, so muss der Pfad zu dem Marathon Verzeichnis den Umgebungsvariablen hinzugefügt werden.
Die Dokumentation von Marathon ist sehr gut. Auf der Projektseite wird auf mehreren Seiten kurz beschrieben, wie Marathon funktioniert, welche Funktionalität angeboten wird und wie es genutzt werden kann. In der Download-Rubrik stehen zwei PDF-Dokumente zum Download bereit, ein User-Manual und ein Entwickler-Manual. Im User-Manual wird sehr gut beschrieben, wie Marathon zu konfigurieren ist, um eigene GUI-Programme zu testen. Anhand von Bildern wird die Entwicklungsumgebung vorgestellt und beschrieben. Im Entwickler-Manual wird beschrieben, wie Marathon implementiert wurde. Diese Anleitung ist interessant, falls die Absicht Marathon weiter zu entwickeln besteht. Die komplette Dokumentation liegt in englischer Sprache vor. Zusätzlich zur Dokumentation zu Marathon befindet sich auf der Sourceforge-Seite ein eingerichtetes Nutzerforum. In diesem Forum werden sehr viele auftretenden Probleme und deren Lösungen diskutiert. Dem Download von Marathon liegt eine .xml Datei bei, mit beispielhafter Nutzung von ANT, zum automatischen Ausführen von zuvor angelegten Marathon-Tests.
Die Projektwebseite wird in regelmäßigen Abständen aktualisiert und mit neuen Features oder Informationen gefüllt. Die Webseite ist sehr übersichtlich und gut gegliedert. Zur eigentlichen Projektseite ist auf der Seite von Sourceforge ein Forum zur Software eingerichtet, wo Nutzer der Software über Probleme und Lösungen diskutieren können. Zum aktuellen Untersuchungszeitpunkt (28.07.2011) wird die Hauptseite, wegen dem Release von Marathon-3, überarbeitet.
Auf der Webseite in der Rubrik "Contact" erhält man wichtige Kontaktinformationen der Firma Jalian, wie Anschrift, eMail oder Telefonnummer. Zusätzlich besteht die Möglichkeit, sich in die Mailingliste einzutragen oder im eingerichteten Forum über Probleme und Lösungen zu diskutieren.
Die intuitive Nutzbarkeit von Marathon ist sehr gut. Die zur Verfügung gestellten PDF-Dokumente und die Beispiele geben einen sehr schnellen und guten Überblick über die Möglichkeiten von Marathon. Da die Entwicklungsumgebung stark an das Aussehen von Eclipse angelehnt ist, fällt das Arbeiten mit dem Programm für Anwender mit Eclipse-Kenntnissen sehr leicht. Der Skript-Recorder kann mit einem Mausklick gestartet werden, dabei wird das zu testende Programm und der Recorder gestartet. Durch Klicken der Bedienelemente werden die Aktionen vom Recorder registriert und aufgenommen. Wird der Aufnahmemodus verlassen, wechselt das Programm zurück zum Editor und es kann das aufgezeichnete JRuby bzw Jython Skript anschaut und bearbeitet werden. Mit dem Play-Knopf kann das aufgenommene Skript jederzeit erneut abgespielt werden. Um in der Aufnahmephase Eingaben oder Aktionen auf Korrektheit zu überprüfen, bietet Marathon die Möglichkeit, während dieser Phase Assertions einzufügen. Dies kann auf verschiedene Weise genutzt werden, entweder durch Drücken der STRG + rechten Maustaste oder STRG+F8. Nach dem Drücken einer dieser Kombinationen, erscheint ein Kontextmenü auf der grafischen Benutzeroberfläche. In diesem Menü besteht die Möglichkeit, verschiedene Aspekte zu prüfen (Werte, Text, Farben uvm.). Treten während der Abspielphase Fehler oder Probleme auf, werden diese in der Entwicklungsumgebung im Bereich 'Output' ausgegeben.
Eine Automatisierung erfolgt bei Marathon über die aufgezeichneten JRuby bzw. Jython Testfälle. Einmal aufgenommene Skripte laufen vollständig automatisiert ab und erwarten keinerlei Interaktion durch einen Nutzer. Für Tests, bei denen vollständige Automatisierung nicht möglich oder sinnvoll ist, lassen sich auch semi-automatische Tests definieren. Läuft der Test erfolgreich durch, erscheint ein grüner Balken in der JUnit-Perspektive des Programms. Auftretende Fehler werden in diesem Bereich aufgelistet und lassen sich somit schnell und einfach analysieren. Es ist möglich, zuvor angelegte Tests mit Hilfe von ANT oder Batch Dateien auszuführen.
Die getestete Beispielappikation kann hier geladen werden. Nach erfolgreichem Starten von Marathon erscheint folgendes Fenster:
In diesem Fenster ist die Möglichkeit gegeben, ein bestehendes Marathonprojekt zu modifizieren oder ein Neues anzulegen.
In diesem Beispiel wird ein neues Projekt angelegt. Dazu klickt man den Button "New...".
In diesem Fenster muss ein Projektname, Projektverzeichnis und optional eine Projektbeschreibung angegeben werden:
Im Tab "Main" muss der Pfad zur Main-Klasse und unter "Working Directory" der Pfad zum Testverzeichnis angegeben werden:
Mehr Einstellungen brauchen nicht vorgenommen werden. Mit einem Klick auf den Knopf
"Save" werden die Projekteinstellungen gespeichert. Mit dem Knopf "Test" wird Marathon gestartet.
Das nachfolgende Bild zeigt die Entwicklungsumgebung mit der Editoransicht:
Um ein Testskript mit dem Recorder aufzuzeichnen, muss ein neuer Testcase angelegt werden. Dazu klickt man im Menü auf
"File" --> "New" --> "Testcase". Anschließend erscheint ein neuer Tab im Editorfenster. Nun kann über den Aufnahmeknopf (roter Kreis)
der Skriptrecorder gestartet werden. Es öffnet sich das zu testende Programm und ein kleines Recorderfenster. Klickt man
auf ein Element im Programm, bemerkt der Recorder diese Interaktion und zeichnet sie auf.
Seit Marathon Version 3 gibt es einen neuen "raw" Aufzeichnungsmodus, der im Recorder beim Aufzeichnen hinzugeschaltet werden kann:
Im raw Modus werden alle Aktionen "detailierter" aufgezeichnet. Nach der Aktivierung werden einzelne Mausklicks und Tastendrücke aufgezeichnet, während der normale Modus diese ausführlichen Details wegoptimiert.
Wird der Aufnahmemodus verlassen, kehrt man in den Editormodus zurück und sieht das aufgezeichnete Skript in Python-Code.
Sollen im Aufnahmemodus Assertions eingefügt werden, fährt man mit der Maus auf das gewünschte Element und drückt "STRG + rechte Maustaste". Es öffnet sich ein
Kontextmenü, in welchem verschiedene Abfragemethoden zur Verfügung stehen:
Zum Abspielen des Skripts kann zwischen zwei Alternativen gewählt werden: schnell und langsam.
Läuft der Test erfolgreich durch, erscheint der grüne Balken von JUnit. Treten Fehler während des Laufs auf, werden diese im Bereich 'Output' dargestellt:
Marathon Testprojekt:
Zur Ausführung des Testprojektes muss ggf. im Menü über "Marathon" --> "Project Settings" im Reiter "Main"
noch die korrekte "Working Directory" gesetzt werden.
Daraufhin kann das Skript über die grüne "Play"-Taste (oder die "Slow-Play"-Taste, falls man die automatischen
Interaktionen mit der GUI nachverfolgen möchte) gestartet werden.