Zur Steigerung der Softwarequalität wird in vielen Projekten sogenannte Continuous Integration (CI) durchgeführt. Bei der Continuous Integration wird bei jeder Änderung der Codebasis die Software neu gebaut. Zusätzlich werden im Regelfall Code Metriken zur Ermittlung der generellen Codequalität ermittelt und automatisierte Unit-Tests durchgeführt, welche die Funktionalität der eigentlichen Anwendung sicherstellen sollen. Da Unit-Tests normalerweise jeweils nur kleine Anteile der eigentlichen Software testen und das Frontend für gewöhnlich außer Acht lassen, liegt es nahe, ebenfalls automatisierte GUI Tests zum Bestandteil der Continuous Integration zu machen. Dabei ist es unerheblich, ob nur die eigentliche Anwendung, oder ggf. ein komplexer End-to-End Prozess getestet werden soll.
Mit 5 einfachen Schritten können Sie zum Beispiel eine Continuous Integration Umgebung mit dem viadee Testframework (vTF), CI-Server und GIT-scm als Versionsverwaltung erreichen:
1. Aufsetzen eines Continuous Integration Servers (falls nicht vorhanden)
Die Auswahl des richtigen CI-Servers ist abhängig von vielerlei Faktoren. Eine kostenlose und bewährte Alternative aus der Java-Welt ist Jenkins, welches als Servlet-Container oder Standalone Applikation auf einem Server Ihrer Wahl installiert werden muss.Laden Sie sich die Anwendung https://jenkins.io/ herunter. Abhängig von Ihrem Betriebssystem finden Sie auf der Herstellerseite eine Anleitung für die Installation. Für eine Continuous Integration Umgebung ist eine dauerhafte Installation auf einem von ihrem internen Netz erreichbaren Server unvermeidlich, damit Ihre Anwendungen und Prozesse kontinuierlich getestet werden.
Für den Jenkis-CI laden Sie die aktuelle Installationsdatei für das von Ihnen gewünschte Betriebssystem herunter und führen sie die Datei aus.
Folgen Sie den Installationsanweisungen, im Anschluss öffnet sich ein Browserfenster mit der Adresse „localhost:8080“, auf der der Server initialisiert wird.
Im Browser folgen Sie den Installationsschritten. Während der Installation werden Sie aufgefordert entsprechende Plugins auszuwählen oder empfohlene Plugins zu verwenden. Im Regelfall sollten die empfohlenen Plugins ausreichen, weitere Plugins können Sie alternativ im Nachgang installieren. Nach einer erfolgreichen Installation muss Jenkins neugestartet werden.
2. Aufsetzen eines vTF-GUI Test Server (falls nicht vorhanden)
Im nächsten Schritt müssen Sie einen dedizierten Test-Server für Ihre GUI Tests herstellen. Im Idealfall ist dies ein Endbenutzer Gerät, welches durchgängig eingeloggt und aktiv ist, um möglichst einen „echten“ Nutzer zu simulieren. Sollten hierdurch sensible Daten gefährdet sein bzw. unerlaubter Zugriff ermöglicht werden, kann z.B. eine virtuelle Maschine verwendet werden, die nur für ausgewählte Nutzer erreichbar ist.Das viadee Testframework wird auf dem Rechner installiert und gestartet. Prüfen sie die Funktionalität des Servers, indem Sie den für Sie relevanten Testfall über das Web-Frontend starten.
Prüfen Sie, dass der Testfall erfolgreich ist und merken Sie sich den Dateinamen der Testdatei (in diesem Beispiel „MeinTest.xlsm“) für die spätere Konfiguration im CI-Server.
3. Erstellung des Build Jobs für die zu testende Software
Je nach Continuous Integration Server und Build Prozess müssen sie den Job unterschiedlich konfigurieren. Bei Jenkins wird ein neuer Job durch Klick auf die Schaltfläche „Element anlegen“ erstellt.
Geben Sie Ihrem Job einen Namen und wählen sie einen Typ aus, im Jenkins ist das „Free Style“ – Softwarepaket zumeist die richtige Wahl.
Konfigurieren Sie das GIT Repository mit einer regelmäßigen Abfrage auf Änderungen und starten Sie den eigentlichen Build – im folgenden Beispiel durch Aufruf von Maven. Das erzeugte Artefakt wird nun z.B. auf dem GUI Test Server bereitgestellt. Die jeweilige Konfiguration ist von Ihrem Projekt abhängig und wird an dieser Stelle nicht weiter erläutert.
4. Aufruf des Test Jobs nach dem Build Job
Erstellen Sie nun einen weiteren Job, welcher im Nachgang den eigentlichen Test Aufruf durchführt. Auch hier kann im Falle des Jenkins ein „Free Style“-Paket verwendet werden.
Um sicherzustellen, dass jeweils die aktuellste Version des Testfalls verwendet wird, macht es auch hier Sinn, ein GIT-Repository zur Versionsverwaltung zu verwenden. Die entsprechende URL wird eingetragen, so dass der Testfall auf dem Hudson zur Verfügung steht.
Als Auslöser für den Job, wird der vorher angelegte Job zum Deployment der Anwendung referenziert.
Erzeugen Sie nun einen neuen Build Schritt „Shell ausführen“, in welchem die Testdaten auf den vTF-Server übertragen werden. Um die Datei-Schnittstelle anzusprechen, kann ein beliebiger http-Client verwendet werden. An dieser Stelle wird das populäre Tool curl verwendet.
Die beiden übergebenen Parameter stehen einmal für das Zielverzeichnis, sowie die zu übertragende Datei. Mit dem vorangestelltem „-F“ wird gekennzeichnet, dass es sich um Formular-Parameter handelt. Die Url muss auf den Zielserver des viadee Testframework angepasst werden.
Nun gilt es noch, den aktualisierten Testfall auszuführen. Erzeugen Sie hierfür einen weiteren Build Schritt „Shell ausführen“. Auch hier wird ein http-Aufruf abgesetzt, um den Testfall starten zu lassen. (Tipp: Natürlich können Sie auch beide Aufrufe in einem Build-Schritt absetzen, der Übersicht halber schlagen wir jedoch zwei getrennte Build Schritte vor.)
Der Start eines Testfalls geschieht durch einen http-POST Aufruf. Mittels Form-Parameter wird der Name der zu testenden Datei übergeben.
Der Job kann nun gespeichert werden und wird im Anschluss an den Build Job aus Punkt 3 aufgerufen.
5. Interpretation des Ergebnisses
Sofern ein Test fehlerhaft war, gibt das viadee Testframework den http-Body „Result Level: Failed“ zurück. Das Ergebnis muss also noch im Buildschritt interpretiert werden, so dass Jenkins das Ergebnis entsprechend übersetzt.Der aktuelle Status wird in der Seitenleite von Jenkins angezeigt.
Fazit
Mit diesen fünf einfachen Schritten können Sie ohne großen Aufwand Ihre GUI Testfälle in eine Continuous Integration (CI) Umgebung überführen. Das Resultat ist eine schnelle Identifizierung von Fehlern, die nicht durch System-, Integrations- oder Unit-Tests abgedeckt würden. Zusätzlich können Sie auf einen manuellen Regressionstest vor Inbetriebnahme von Änderungen verzichten, wenn Sie diesen bereits über automatisierte GUI Tests abdecken. Interessiert? Sprechen Sie uns an!
Von der Test- zur Prozessautomatisierung: aus vtf wird mateo
Das ehemalige viadee Testframework (vTF) hat sich weiterentwickelt. Um dem Leistungsumfang des gewachsenen Produktportfolios gerecht zu werden, erscheint es unter neuem Namen. Erfahren Sie mehr über Testautomatisierung mit mateo core, das Testen von Weboberflächen mit mateo web und robotergesteuerte Prozessautomatisierung mit mateo rpa.
zurück zur Blogübersicht