Qualitätssicherung

Ready to go!

racemap nutzt funktionale Testautomatisierung mit Open Source Software.

In den vergangenen Monaten berichtete Jan mehrmals über die Zusammenarbeit mit dem Dresdner Startup-Unternehmen racemap. Zu dieser Zeit waren wir beide noch Teil des Trainee-Programms der profi.com AG und es ergab sich für mich die Möglichkeit, die racemap-Webseite einem umfangreichen funktionalen Test zu unterziehen. Racemap entwickelt GPS-Tracking für Sport Events. Jeder Sportler kann mit Racemap sein eigenes Live-Tracking einrichten und die Zuschauer können das Rennen Live im Internet und auf dem Smartphone verfolgen. Wenn Sportler oder Veranstalter ihren GPS-Service über die racemap-Seite buchen wollen, sollte von der Registrierung bis zur Abrechnung alles einwandfrei funktionieren.

Schnell stellte sich heraus, dass das manuelle Testen der Seiten für die Entwickler eine zeitaufwändige Aufgabe darstellt. So konnte nicht zu jedem neuen Software-Build sichergestellt werden, dass alle Funktionen weiterhin einwandfrei laufen. Zum Teil verursachten minimale Quellcodeänderungen an ganz anderen Stellen unerklärliche Fehler. Auch deshalb verständigten wir uns darauf, folgende Funktionalitäten für den Test zu automatisieren: Registrierung, Login und Event-Buchung.

Trickreich die Skripte überlistet
Zur Testautomatisierung nutzte ich das Framework von Selenium. Mit dem Selenium WebDriver ist es möglich, Befehle an Webbrowser zu senden, um Maus- und Tatstaureingaben zu simulieren. Im ersten Schritt zeichnete ich die Ausführung der oben genannten Aktionen mit Hilfe des Firefox Addons Selenium IDE auf. Selenium IDE zeichnet Maus- und Tastatureingaben auf, wandelt sie in ein Skript um und lässt dieses abspielen. Anschließend exportierte ich dieses erste Skript nach Eclipse, was mir als Entwicklungsumgebung für komplexere Automatisierungsskripte, wie sie für racemap notwendig waren, dienen sollte.

Das importierte Skript diente als Grundstein für die späteren lauffähigen Skripte. Probleme bereiteten mir anfangs die Dateiuploads, welche für die Event-Erstellung von Racemap notwendig waren. Ich fand keine zufriedenstellende Möglichkeit, mit Selenium auf Windows-Dateifenster zuzugreifen. Letztendlich erstellte ich ein Skript, welches von einem anderen Programm (AutoIT) ausgeführt wird, das wiederum von Selenium aufgerufen wird.

Intelligente Dokumentation für leichtere Auswertung
Mit Hilfe von TestNG, einem Test-Framework auf Basis von JUnit, verfeinerte ich die lauffähigen Skripte. So erstellte ich verschiedene Iterationen, die auf unterschiedliche Parameter zugreifen, jedoch alle dieselben Vorbedingungen haben und somit nur einen Teststart erfordern. Die Testauswertung wurde dadurch ebenfalls vereinfacht. Parallel zum Test wird ein Logfile erzeugt, welches über auftretende Fehler berichtet und diese mit Hilfe von Screenshots abspeichert. So werden nicht nur Fehler auf der Webseite dokumentiert, sondern auch Fehler im Skript, die auf Grund von Quellcodeanpassungen auf der Zielwebseite auftreten können.

Das ist gleichzeitig auch ein erheblicher Nachteil von Selenium. Im Vergleich zu HPE UFT ist es deutlich umständlicher, eine Umgebung aufzubauen, die nicht nur Tests ausführt, sondern auch mit Testfällen verknüpft werden kann und Berichte erstellt. Zudem fehlt eine Objektbibliothek, die mit allen wichtigen Elementen einer Webseite aufgebaut werden kann. In Selenium müssen die Webelemente manuell während der Laufzeit identifiziert werden, während HP UFT ein Tool beinhaltet, welches die Webelemente anhand sinnvoller Kriterien auch außerhalb der Laufzeit ausfindig macht.

Für Startup-Unternehmen und kleinere Unternehmen stellt Selenium dennoch eine gute Alternative zu kostenpflichtigen Tools dar. Bei der Darstellung, Ausführung und Automatisierung von einer großen Anzahl an Testfällen, stößt Selenium jedoch an seine Grenzen. Wie eine Open-Source Alternative dennoch aussehen kann, zeigte die profi.com AG bereits vor einiger Zeit: https://www.youtube.com/watch?v=vk_W24CimiM.

Autor

Nick Neumann IT-Consultant
Nick Neumann