Image
QTAF Test Automation Framework

Das Qytera Test Automation Framework (QTAF) - Testen mittels Selenium war noch nie so einfach

🕒 Lesedauer: 5 Minuten

Das Qytera Test Automation Framework (QTAF) ist ein von der Qytera GmbH entwickeltes Java-Testframework basierend auf TestNG, welches ein einfaches Aufsetzen neuer Selenium-Testprojekte, HTML-Reporting, Cucumber-Unterstützung, Anbindung an Jira Xray und einfache Erweiterbarkeit bietet.

Ein kostspieliger Zeitfaktor beim Aufsetzen eines neuen Testprojektes ist die Einrichtung der Dokumentation der Testfälle. Ein möglichst allgemein nutzbares Reporting-Format wie JSON wird benötigt, um die ausgeführten Testfälle und eventuell aufgetretene Fehler zu dokumentieren und in ein anderes Tool wie etwa ein Testmanagementsystem zu übertragen. Weiterhin wäre ein HTML-Reporting sinnvoll, um den Testern einen schnellen Überblick über die durchgeführten Tests zu gewähren und Fehler schnell zu finden.

Das Aufsetzen einer solchen Umgebung ist zeitaufwändig und bindet unnötig viele Ressourcen. Zudem ist es ineffektiv, diesen Prozess für jedes neue Testprojekt zu wiederholen. Effektiver wäre es, ein Framework zu entwickeln, welches genau diese Aufgaben übernehmen würde, sodass die Tester:innen sich um ihre eigentliche Aufgabe kümmern können: das Testen.

QTAF ist die Realisierung genau dieser Idee, das Aufsetzen der Testumgebung und die Dokumentation der Testfälle zu übernehmen. Und QTAF bietet den Tester:innen noch einiges mehr.

Die Vorteile von QTAF

QTAF ist ein Projekt, welches aus der Praxis heraus entstand und die Erfahrung von Tester:innen aus jahrelanger Arbeit mit Testing-Tools bündelt. Mittels QTAF werden drei grundlegende und zeitaufwändige Probleme des Testens gelöst:

  • Das Einrichten einer konfigurierbaren Selenium-Testumgebung,
  • das Reporting einer durchgeführten Testsuite,
  • und die anschließende Dokumentation der Testresultate.

Die Implementierung dieser aufgezählten Problemstellungen verlangt von den Testern zum einen gute Kenntnisse in der Programmierung und des Entwurfs von Softwareprojekten, zum anderen ist sie sehr zeitaufwendig und somit teuer. Die Testumgebung sollte auf Wiederverwendbarkeit ausgerichtet sein, sodass viele ihrer grundlegenden Komponenten auch in anderen Testumgebungen verwendet werden können. Somit lässt sich in anderen Projekten wertvolle Zeit einsparen.

Bevor die eigentlichen Testfälle geschrieben werden können, muss die Testumgebung aufgesetzt und in Betrieb genommen werden. Hierfür vergehen meist Tage bis Wochen und kostet Ihr Unternehmen unnötig viel Zeit und Geld. Hierbei entstand die Idee von QTAF, welches dem Tester die Aufsetzung einer solchen wiederverwendbaren Testumgebung abnehmen sollte.

QTAF löst genau diese Probleme, da es den Tester:innen die Entwicklung einer eigenen Testumgebung abnimmt und somit keine Kenntnisse in Softwareentwicklungsprojekten voraussetzt. Die Einrichtung eines QTAF-Projektes dauert wenige Minuten, nach denen sofort mit der Entwicklung der Testfälle begonnen werden kann.

Den Tester:innen steht nach der Aufsetzung eine vollständige Selenium-Testumgebung zur Verfügung, welche in der Lage ist, auf den gängigsten Browsern wie etwa Chrome, Edge, Firefox, Opera und Safari automatisierte Tests durchzuführen. Auch die Dokumentation der Testfälle wird durch QTAF übernommen und kann nach dem Durchlauf der Testsuite automatisiert in ein Testmanagementtool wie etwa Xray übernommen werden.

 

Image
qtaf-aufbau-architektur.png

Bild: Aufbau und Architektur von QTAF. (Klicken zum Vergrößern) [Quelle: Qytera]

 

Das Aufsetzen eines neuen Testprojekts

Das Aufsetzen eines neuen Testprojektes gestaltet sich mittels QTAF sehr einfach. Hierfür ist lediglich das Erstellen eines Maven-Projektes erforderlich, wofür eine geeignete Entwicklungsumgebung wie etwa Eclipse oder Intellij verwendet werden kann. Anschließend muss lediglich QTAF als Dependency für das Projekt eingerichtet werden und schon ist die Testumgebung bereit.

Die Tester:innen können sofort mit der Erstellung von Testfällen beginnen. Das Reporting dieser Testfälle erfolgt automatisch durch das QTAF-Framework. Welche Features das nun aufgesetzte Testprojekt noch bietet werden wir in den folgenden Abschnitten erläutern.

Testfälle anlegen

Das Anlegen eines Testfalls ist mit QTAF genauso einfach wie bei einem gewöhnlichen TestNG-Projekt. Tester:innen, die mit diesem Framework vertraut sind, werden sich mit QTAF ohne Probleme zurechtfinden. Die Tester:innen legen ihre Testklassen an und versehen diese zusätzlich mit Annotations, welche QTAF bereitstellt. QTAF überwacht während des Testens welche Testfälle ausgeführt wurden und erstellt sowohl JSON- als auch HTML-Reportings aus den aufgezeichneten Daten.

Konfigurierbarkeit

Alle Konfigurationsparameter können entweder über ein JSON-File, über Umgebungsvariablen oder als Kommandozeilenparameter übergeben werden. Dabei bietet QTAF auch die Möglichkeit, Standardwerte aus einer JSON-Datei mittels Umgebungsvariablen oder Kommandozeilenparametern zu überschreiben. Dieses Feature ist vor allem nützlich, wenn Sie das selbe QTAF-Projekt in mehreren Umgebungen mit anderen Konfigurationswerten nutzen möchten.

Beispielsweise können Sie eine Standardkonfiguration in einer JSON-Datei angeben und beim Ausführen den Namen des Webdrivers mittels einer Umgebungsvariable oder eines Kommandozeilenparameters überschreiben. Somit können Sie parallel eine Webapp auf mehreren Browsern testen ohne eine Änderung in Ihrem Quellcode vornehmen zu müssen. Hier eine Live-Demo für Sie über das Anlegen dieser Testumgebungen:

 

 

Docker und Kubernetes

QTAF ist darauf ausgelegt als Microservice verwendet werden zu können. Durch die Konfigurierbarkeit mittels Umgebungsvariablen ist es möglich, folgendes Szenario zu realisieren: Sie möchten eine Webapp auf den gängigsten Browsern testen (Chrome, Firefox, Edge). Erstellen Sie aus Ihrem QTAF-Projekt ein Docker-Image und erzeugen Sie aus diesem Image mehrere Container-Instanzen. Jede Instanz testet die Webapp mittels eines Webdrivers, dessen Namen Sie über eine Umgebungsvariable übergeben.

Somit lassen sich mit der gleichen Codebasis und dem gleichen Docker-Image mehrere Tests parallel auf unterschiedlichen Browsern durchführen. Mittels Docker und Kubernetes ist es ebenfalls möglich, die Docker-Container auf mehrere Server zu verteilen und mit den gängigsten Cloudanbietern wie etwa AWS und Azure zu nutzen.

Selenium Webdriver

QTAF lädt automatisch die aktuellsten Versionen der Selenium Webriver für die gängigsten Webbrowser wie etwa Chrome, Firefox, Edge, Internet Explorer oder Opera. Die Tester:innen müssen nach dem Einrichten eines QTAF-Projektes weder die benötigten Browser installieren noch sich um die Aktualisierung der Browser kümmern. QTAF nimmt Ihnen diese Aufgaben ab und kümmert sich selbst um die Beschaffung und Aktualisierung der entsprechenden Browser. Lediglich der Browsername muss mittels des Konfigurationsfiles übergeben werden.

Android Testing via Appium

QTAF bietet die Möglichkeit, Android-Geräte mittels Appium zu Testen. Die benötigten Treiber für das Testen von Android-Geräten bietet QTAF von sich aus an. Auch hier müssen Anwender:innen lediglich den Namen des Treiber mittels der Konfigurationsdatei übergeben.

Remote Webdriver

QTAF erlaubt es Ihnen ebenfalls Webtreiber über ein Netzwerk anzusteuern. Dies ist vor allem in Cloud-Umgebungen ein nützliches Feature. Für viele der gängigsten Treiber stehen bereits Docker-Container im offiziellen Docker Registry zur Verfügung.

Page Object Pattern und Dependency Injection

QTAF unterstützt das Page Object Pattern. Beim Page Object Pattern (PO) wird Code, der ein visuelles Objekt einer Website (beispielsweise eine Navigationsbar, ein Formular, etc.) ansteuert, in einer eigenen Klasse gekapselt. Innerhalb dieser Klassen werden Methoden zur Manipulation dieses Objektes bereitgestellt (beispielsweise das Anklicken einer Buttons, das Abschicken eines Formulars).

Mittels QTAF können diese Methoden, die innerhalb einer PO-Klasse aufgerufen werden, getrackt werden. Hierbei werden auch die Parameter, die den Methoden während des Testfalls übergeben wurden aufgezeichnet, sodass später nachvollzogen werden kann, welche Parameter welches Ergebnis bei einem Methodenaufruf hervorriefen.

Mittels Dependency Injection lassen sich die erstellten PO-Klassen leicht in andere Klassen einbinden. Den Tester:innen wird hierbei der Aufwand abgenommen, die entsprechenden PO-Klassen selbst zu instanziieren, was ebenfalls eine Reduktion der Komplexität und der Menge des Codes zur Folge hat.

 

Image
testfall-qtaf-projekt.png

Bild: Testfall eines QTAF Projektes. (Klicken zum Vergrößern) [Quelle: Qytera]

 

Unterstützung von Cucumber

QTAF bietet von Hause aus die Unterstützung von Cucumber an. Hierbei zeichnet QTAF die durchgeführten Cucumber-Tests auf und stellt die Ergebnisse der Testfälle ebenfalls via JSON oder als HTML-Report zur Verfügung.

Erweiterbarkeit

QTAF bietet ein eigenes Event-System an, über das Tester eigene Logik in den Testablauf einbringen können oder eigene Plugins für QTAF entwickeln können. So lassen sich beispielsweise eigene Verarbeitungen der erzeugten Reporting-Daten realisieren, beispielsweise eine Anbindung an eine REST-API, eine automatische Benachrichtigung per E-Mail etc. Somit lassen sich ganze Plugins erstellen, die Sie in mehreren Projekten verwenden können oder auch der Community zur Verfügung stellen können.

QTAF Plugins

Anbindung an die Xray API

QTAF bietet von sich aus die Anbindung an Xray über ein Plugin an. In der Konfigurationsdatei müssen hierfür lediglich die Zugangsdaten für das eigene Xray-Projekt übergeben werden und QTAF sichert die Testergebnisse anschließend in Xray.

Eigene Plugins entwickeln

Da die Welt der Software im ständigen Wandel ist wurde QTAF darauf ausgelegt erweiterbar zu sein. Plugins können dabei über das Eventsystem von QTAF auf die erhobenen Daten zugreifen und diese weiterverarbeiten.

 

Image
5

Veröffentlicht am 27.April 2021

Aktualisiert am 24.April 2024

Tilo Flasche

Test Automation Engineer

Ich studiere Informatik an der Goethe Universität Frankfurt und schreibe aktuell meine Masterarbeit bei Qytera über das Thema Featureextraktion aus Bildern mit Neuronalen Netzen. Den Schwerpunkt meines Masterstudiums legte ich u.a. auf die Themen Maschinelles Lernen und Computer Vision. Bei Qytera bin ich seit Oktober 2020 als Werkstudent tätig und habe u.a. das QTAF-Testing-Framework mitentwickelt. Zuvor sammelte ich als Werkstudent und freiberuflicher Entwickler bereits Erfahrungen in der Softwareentwicklung.

Finden Sie weitere interessante Artikel zum Thema: