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

Abbildung 1: Test Case MSTR Beispiel-Dashboard

Abbildung 1: Test Case MSTR Beispiel-Dashboard

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
Automatische Eingabe der Input-Parameter an den Selektoren

Abbildung 2: Automatische Eingabe der Input-Parameter an den Selektoren

  • 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.
Darstellung der ermittelten Unterschiede über den PDF-Vergleich

Abbildung 3: Darstellung der ermittelten Unterschiede über den PDF-Vergleich

Der gesamte Ablauf mit Selenium und dem PDF-Vergleich kann wie folgt skizziert werden:

Testing-Workflow mit Selenium und PDF-Vergleich-Tool

Abbildung 4: Testing-Workflow mit Selenium und PDF-Vergleich-Tool

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

Eingabe der Parameter

Abbildung 5: Eingabe der Parameter

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.

Automatische Eingabe von Anmeldedaten

Abbildung 6: Automatische Eingabe von Anmeldedaten

Nach dem Laden des Dashboards werden die Selektoren automatisch ausgewählt.

Auswahl Kategorie

Abbildung 7: Auswahl Kategorie

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
PDF Download

Abbildung 8: PDF Download

  • Download-Button wird angeklickt
Dokument speichern

Abbildung 9: Dokument speichern

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)
Ausgabe

Abbildung 10: Ausgabe

Schließen des PDF-Browserfensters und des Browsers

Abbildung 11: Schließen des PDF-Browserfensters und des Browsers

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.

Architektur für A-B-Vergleich mit Selenium Webdriver über die Teststeuerung

Abbildung 12: Architektur für A-B-Vergleich mit Selenium Webdriver über die Teststeuerung

Jetzt teilen auf:

Jetzt kommentieren