Automated UI-Testing mit Jubula: Ein Erfahrungsbericht

27.10.2017

Jubula ist ein automatisiertes GUI Testing Tool welches auf dem vormals kommerziellen Tool GUIDancer basiert. Die Codebasis wurde von der Firma BREDEX GmbH an die Eclipse Foundation gestiftet. Jubula erlaubt die einfache und schnelle Erstellung von funktionalen Tests, entweder in einer Stand-Alone Version oder als Plug-In für Eclipse. Außerdem ermöglicht die Jubula Client API, Tests auch in Java Code zu schreiben und via JUnit zu starten.

In der mitgelieferten ITE (Integrated Test Environment) können Testfälle einfach und schnell per Drag&Drop  aus einer Bibliothek von Aktionen zusammengebaut werden. Anschließend werden die ausgewählten Aktionen durch Mapping  mit der tatsächlichen zu testenden Komponente der Anwendung verbunden. Die Testfälle können so weitgehend unabhängig vom Code entworfen werden, da dieser nicht benötigt wird um den Testfall zu entwerfen. Unterstützt werden Swing, SWT, RCP, GEF, JavaFX und HTML Anwendungen.

Um Testfälle ausführen zu können muss zunächst eine Verbindung zum Application-Under-Test Agent (AUT-Agent) aufgebaut  werden. Dieser startet die vorher konfigurierte Application-Under-Test (AUT), wodurch wiederum die Testfälle gestartet werden können.

Im Rahmen eines Projekts (JavaFx Fat-Client Applikation für Navigationskartendownloads) haben wir Jubula als Alternative zur bisher bestehenden Testautomatisierung mit TestFx analysiert. Nachfolgend haben wir unsere Erkenntnisse zusammengetragen.

Pros

  • Testfälle können schnell und einfach zusammengebaut werden
  • Erstellen der Tests durch Drag&Drop erfordert keinerlei Programmierkenntnisse
  • Tests können unabhängig vom Code entworfen werden
  • Testfälle können noch vor dem Schreiben des Codes erstellt werden (dadurch wird Test-driven Development ermöglicht)
  • Tests können auch programmatisch mit dem Jubula Client API erstellt werden
  • GUI wird benutzernah mit realen Eingaben getestet

Cons

  • Für Personen mit wenig Erfahrung ist das Einrichten des Jubula Plug-In für Eclipse deutlich komplizierter und aufwendiger als andere Test-Frameworks wie zum Beispiel TestFx.
  • Das Ausführen der Tests auf Jenkins ist zwar grundsätzlich möglich, benötigt allerdings virtuelle oder physikalische Eingabegeräte sowie eine GUI. Dies liegt daran dass Jubula reale Klicks und Tastatureingaben ausführt.
  • Das Bewegen der Maus bzw. Tastatureingaben während des Tests können zum Fehlschlagen des Tests führen. Die Entwickler von Jubula empfehlen daher die Tests auf dedizierten Geräten auszuführen. Dabei sind verschiedene Punkte zu berücksichtigen, unter anderem das ausschalten der Firewall sowie das unterbinden von automatischen Software Updates oder Installationen. Die kompletten Anforderungen gibt es hier.
  • Um Tests in Java zu schreiben und ausführen zu können wird zusätzlich ein externer AUT-Agent benötigt sowie eine dauerhafte Verbindung zu diesem um Tests ausführen zu können.
  • Es werden keine JavaDocs zu den Methoden und Klassen der Jubula Java API mitgeliefert.
  • Schlägt ein Test fehl, ist nicht ersichtlich aus welchem genauen Grund (Exception) der Test fehlschlägt oder in welcher Zeile im Code der Fehler auftrat.
  • Etwas dürftige Error Meldungen die von der Jubula Client API auf der Konsole in Form von „An Error ocurred: …“ ausgegeben werden, ohne den Fehler genauer zu beschreiben.
  • Bei Benutzung der Jubula Client API werden weiter führende Error Meldungen außerdem nicht in Eclipse geloggt sondern außerhalb, da der AUT-Agent außerhalb von Eclipse läuft.
  • Im Vergleich zu TestFx gibt es für Jubula nur sehr wenige Beispiele und Tutorials welche den vollen Funktionsumfang erläutern und Hilfestellung bei Problemen geben.

Fazit

Aufgrund der notwendigen Infrastruktur für Jubula und der weniger intuitiven Java-API von Jubula konnte und das Tool nicht überzeugen. Wir werden im entsprechenden Projekt weiterhin auf TestFX setzen.

(Geschrieben von Michael Lang und Marc Mai)

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*