QTAF: Qytera Test Automation Framework (Open Source)

🕒 Lesedauer: 6 Minuten

Liebe Community, in diesem Artikel möchten wir euch unser neu entwickeltes Open Source Testframework namens QTAF vorstellen. Das Qytera Test Automation Framework (QTAF) ist ein von der Qytera GmbH entwickeltes Java-Testframework basierend auf TestNG, welches ein einfaches Aufsetzen neuer Java-Testprojekte, mit 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.

QTAF auf GitHub

Die Vorteile von QTAF

QTAF ist ein Projekt, welches aus der Praxis heraus entstanden ist 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 schnelle Einrichten einer konfigurierbaren Testumgebung
  • Das Reporting einer durchgeführten Testsuite
  • 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 in einem neuen Projekt die Testumgebung aufgesetzt und in Betrieb genommen werden. Hierfür vergehen meist Tage bis Wochen und dies kostet Ihr Unternehmen unnötig viel Zeit und Geld. Hierbei entstand die Idee von QTAF, welches dem Tester das Aufsetzen 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 vorausgesetzt sein müssen. 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.

Wie funktioniert QTAF?

 

Image
qtaf_modell.jpg

Bild: Das QTAF Modell (Klicken zum Vergrößern) [Quelle: Qytera]

QTAF klinkt sich zunächst in das Eventsystem eines Testframeworks wie etwa TestNG oder Cucumber ein, um die Ausführung und die Ergebnisse von Testfällen zu überwachen. Die nativen Events dieser Testframeworks werden zunächst von QTAF entgegengenommen und standardisiert. Standardisierung bedeutet, dass die nativen Events der Testframeworks in ein neues Format überführt werden. Somit müssen sich Plugins, welche eine Weiterverarbeitung der Events vornehmen, um beispielsweise Reports zu erzeugen, nicht an unterschiedliche Testframeworks wie etwa TestNG oder Cucumber angepasst werden. Die Plugins nehmen nun die standardisierten Events entgegen und verarbeiten diese weiter, beispielsweise indem sie die Testergebnisse auf eine Plattform wie Xray oder in einen Cloudspeicher wie etwa Amazon S3 hochladen.

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.

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 Seleniumtreiber 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 Treiber installieren noch sich um die Aktualisierung dieser kümmern. QTAF nimmt Ihnen diese Aufgaben ab und kümmert sich selbst um die Beschaffung und Aktualisierung der entsprechenden Treiber.

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.

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.

Saucelabs

QTAF unterstützt die Testausführung auf der Plattform Saucelabs. Saucelabs ist eine Cloudumgebung, in der virtuelle Maschinen mit vorinstallierten Browsern bereitgestellt werden. Dies bietet den Vorteil, dass in kurzer Zeit auf einer großen Anzahl von verschiedenen Browsern, Browserversionen und Betriebssystemen Tests durchgeführt werden können. Die aufgezählten Parameter können QTAF hierbei von außen übergeben werden. Saucelabs unterstützt neben dem Testen von Webanwendungen auch das Testen von mobilen Apps auf den Betriebssystemen Android und iOS. Auch hier liegt der Vorteil von Saucelabs darin, dass die benötigten Geräte nicht durch den Kunden angeschafft werden müssen sondern über Saucelabs geleased und remote gesteuert werden können. Auch hier liegt der Vorteil darin, dass sich Testfälle auf unterschiedlichen Versionen der Betriebssysteme und unterschiedlichen Geräten verschiedener Hersteller effizient testen lassen. Saucelabs wartet mit weiteren Features wie etwa Videomittschnitten und Screenshots der Testläufe auf. Diese können nach der Ausführung des Testdurchlaufs eingesehen und heruntergeladen werden. Sie können jeden Testschritt eines Testfalls mittels Bildschirmaufnahmen nachvollziehen.

QTAF Plugins

QTAF bietet ein eigenes Event-System an, über das Tester:innen 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 Plugins erstellen, die Sie in mehreren Projekten verwenden können oder auch der Community zur Verfügung stellen können.

GitHub Link

QTAF auf GitHubGerne beantworten wir Ihnen Fragen und beraten Sie genauer zur Testautomatisierung in Ihrem Projekt. Kontaktieren Sie uns hierfür einfach oder vereinbaren Sie direkt einen kostenlosen Testautomatisierungs-Workshop mit unseren Qytera-Testexperten. Wir wünschen Ihnen viel Erfolg bei Ihrer Testautomatisierung!

Image
5

Veröffentlicht am 10.November 2022

Aktualisiert am 23.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: