Das Thema Testautomatisierung mit der Bibliothek Selenium Webdriver im Bereich Frontend steht in diesem Blogbeitrag im Mittelpunkt. Mit einer Testautomatisierung können Ressourcenanforderungen und Zeitaufwände bei gleichzeitig hoher Qualität der Testergebnisse minimiert werden.
Besonders im Business Intelligence Umfeld ist eine Testautomatisierung auf Report- und Dashboard-Ebene aufgrund der meist hohen Objektanzahl äußerst empfehlenswert und gerade im agilen Projektumfeld fast schon obligatorisch. Gerade bei komplexen Dashboards (viele Datasets, unterschiedliche Arten der Benutzereingaben, dynamische Grafiken etc.) ist das manuelle Testen sehr aufwändig und dadurch meiner Erfahrung nach eine Agilitätsbremse.
Manuelles Testen ist zeitaufwendig
Die Frontend-Objekte (Reports, Dashboards) können eine große Datenmenge als Basis haben. Das manuelle Testen wäre in dem Fall sehr arbeitsaufwändig und fehleranfällig. Damit wird aber trotzdem nicht die gleiche Qualitätsprüfung, wie mit einem automatisierten Testwerkzeug, erreicht. Das Ganze benötigt viele Ressourcen und ist mit hohen Kosten versehen.
Dieses Problem kann typischerweise bei einem BI-Tool Releasewechsel auftreten. Hier müssen alle Frontend-Objekte durchgetestet werden.
Lösungsansatz
Zur Lösung haben wir im Projekt eine Java-basierte Teststeuerung entwickelt, die unter anderem dazu dient, einen sauberen und schnellen A/B-Vergleich von Frontend- und Backend-Objekten (Referenz-Test Abgleich) zu ermöglichen.
Die Frontend Reports und Dashboards werden über die Open-Source Selenium Webdriver Bibliothek für den Testablauf automatisiert und mit Hilfe eines Diff-PDF-Vergleichs (auch Java-basiert) weiter unterstützt. Dies ist in der Lage, einen A/B-Vergleich im PDF-Format auf Pixelebene durchzuführen. Dieser Ansatz ist besonders effektiv und hilfreich bei komplexen Dashboards mit Grafiken, Bitmaps, etc.
Die Selenium WebDriver Bibliothek wird verwendet, um Webbasierte Anwendungstests (unter anderem Reports und Dashboards im Webbrowser) zu automatisieren. Dabei werden viele Browser wie Firefox, Chrome oder Internet Explorer unterstützt.
Vergleich von zwei Microstrategy Dashboards
Um den Vergleich eines Microstrategy-Dashboards zwischen zwei Umgebungen (z.B. Test und Referenz) mit Selenium Webdriver und dem PDF-Vergleich über eine Java-Teststeuerung darzustellen, wird das obige Beispiel-Dashboard aus Abbildung 1 verwendet. (siehe Bild 1). Hierbei handelt es sich um ein Beispiel-Dashboard, welches mit Microstrategy mitgeliefert wird. Auf der Oberfläche finden sich drei Selektoren die nachfolgend beschrieben werden.
- Der Test-Referenz Vergleich zweier Dashboards wir automatisiert durchgeführt. Dabei führt die Teststeuerung die folgenden Schritte durch: Eingabe der Input Parameter an den Selektoren
Bsp.: Input Parameter => I_Category = „Musik“
I_Region = „Nordosten“
I_Quarter = „2016 Q2“
- Browser wird gestartet (Firefox) [Headless, nicht-headless]
- Die Selektoren im Microstrategy Web-Dashboard werden mit den ausgewählten Parametern aus Test- und Referenz-Umgebung automatisch selektiert
- Aus den Ergebnissen werden zwei PDF-Dateien (aus der Test- und Produktions-Umgebung) erzeugt, auf dem Filesystem gespeichert und mit einer definierten Namenskonvention entsprechend benannt.
- Die PDFs werden über einen Java-basierten PDF-Vergleich abgeglichen. Die Unterschiede aus beiden PDFs anschließend markiert ausgegeben.
Der gesamte Ablauf mit Selenium und dem PDF-Vergleich kann wie folgt skizziert werden:
Automatisierung des Vergleichs per Java und Selenium
Nachfolgend werden die technischen Umsetzungsdetails des oben geschilderten automatisierten Dashboard-Vergleichs erläutert.
Die Selenium Bibliothek wurde in das Teststeuerung Java-Projekt eingebunden und die nötigen Funktionen zum Fernsteuern von Webseiten verwendet. Test Cases zum Dashboard-Vergleich wurden erstellt und in einem zentralen Metadatenmodell auf der Datenbank abgelegt. Die Parameter zur Ansteuerung der Dashboard-Selektoren sind variabel und können auch in mehrfacher Ausführung im Metadatenmodell gespeichert werden (1 Test Case kann mehrere Assertions haben)
Die Teststeuerung startet unter anderem das Microstrategy-Dashboard über die Methode runBrowser(I_Category, I_Region, I_Quarter). Über diese Methode wurde das komplette Testszenario automatisiert implementiert.
Für einen erstellten Beispiel-Testcase werden folgende Parameter eingegeben:
I_Category = „Musik“
I_Region = „Nordosten“
I_Quarter = „2016 Q2“
Die Methode runBrowser(I_Category, I_Region, I_Quarter) wird mit den übergebenen Parametern ausgeführt und der Test Case wird gestartet. Folgende Aktionen werden dadurch automatisiert ausgeführt:
- Browser wird mit der Dashboard-URL aufgerufen
- Benutzername und Passwort werden automatisch eingegeben (ebenfalls abgelegt im Metadatenmodell)
- Anmeldebutton wird geskriptet angeklickt.
Nach dem Laden des Dashboards werden die Selektoren automatisch ausgewählt.
In unserem Bespiel wird die Kategorie „Musik“ als Eingabeparameter ausgewählt. Dies besteht aus zwei Aktionen (analog gleiche Aktionen gelten bei Parameterübergabe für Region und Quartal):
- Kategorie-Selektor wird aufgeklappt
- Der Wert „Musik“ wird ausgewählt
Für das PDF-Ausdrucken werden folgende Aktionen durchgeführt:
- PDF-Export-Button wird angeklickt
- PDF-Window wird geöffnet
- Download-Button wird angeklickt
Dann wird das PDF gespeichert und mit einer definierten Namenskonvention mit einem Namen versehen (z.B. Cockpit_20180410.pdf).
- Cockpit: Dateiname
- 20180410: Datum von heute (Sysdate)
Die Teststeuerung wird durch einen CI/CD Server, zum Beispiel Jenkins, automatisiert gestartet. Durch eine Jira-Anbindung zu Jenkins kann im Fehlerfall ein Jira-Ticket teilautomatisiert mit folgenden Bugfix-Prozess erstellt werden.