Qytera News

Einladung zum Coding-Meetup am 12. April 2023

Lesedauer: 2 MinutenVideo-Einladung

Liebe Studierende,
wir möchten Euch hiermit zu unserem Coding-Meetup am 12.04.2023 einladen, in dem wir uns mit den Themen Testautomatisierung von Webanwendungen, Last- und Performance-Testing sowie API-Testing befassen werden. Für einen möglichst praxisnahen Abend haben wir uns drei Aufgaben ausgesucht, die ihr während des Meetups lösen dürft.

Was Euch erwartetZunächst werden wir uns die Automatisierung von Webseiten mittels Selenium anschauen. Selenium ist eine Open Source Lösung sowohl für die Testautomatisierung als auch für die Automatisierung anderer webbasierter Prozesse. Wir werden einen kleinen Bot bauen, welcher sich automatisiert auf einer Website einloggen und diese steuern kann. Danach werden wir in das Thema Automatisierung von REST APIs einsteigen, eine Technologie mit der häufig Daten zwischen einer Benutzeroberfläche einer Webapp und dem Backend transportiert werden. Hierfür werden wir uns das Tool Postman anschauen, welches u.a. für die Entwicklung von APIs als auch für das Testing und die Automatisierung von API-basierten Prozessen verwendet werden kann. Schlussendlich schauen wir uns das Tool JMeter an, mit dem Ihr eine Website unter Last testen könnt. Mittels JMeter können wir sowohl testen, wie viel Last unsere Website aushält als auch Angriffe mittels DDos simulieren.


Was Ihr mitbringen solltetZunächst solltet Ihr auf jeden Fall Begeisterung für die Themen Automatisieurng, Testing und Softwareentwicklung mitbringen. Unser Meetup richtet sich vor allem auch an Studierende, die bereits Erfahrung im Beriech Coding oder Softwareentwicklung sammeln konnten. Wir erwarten hier natürlich keine professionellen Kenntnisse in diesen Bereichen von euch. Etwas Erfahrung mit einer Programmiersprache wie JavaScript, Python oder einer ähnlichen Sprache ist jedoch von Vorteil. Ansonsten solltet ihr für die interaktiven Aufgaben euren Laptop mitbringen. Für Essen und Getränke ist gesorgt, den restlichen Abend werden wir für Networking und besseres Kennenlernen untereinander nutzen.

Wir freuen uns darauf Euch am 12.04. in unserem Office an der Hanauer Landstraße 114 begrüßen zu dürfen.


Zum Meetup Event

Gerne 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!

23. November 202223. November 2022 Artikel weiterempfehlen:

Erfahrungsbericht QS-Tag 2022: Reinventing Quality

Lesedauer: 3 Minuten

Am 5.10/6.10. fand der QS-Tag 2022 als Präsenzveranstaltung im Steigenberger Airport Hotel am Flughafen Frankfurt statt. Auch wenn Corona und Remote-Work in den Vorträgen Thema waren, bestand während der QS-Tage reichlich Gelegenheit zur persönlichen Kontaktaufnahme: in gemeinsamen Pausen, an den Ständen der Aussteller und nicht zuletzt während der inkludierten Abendveranstaltung.

Der QS-Tag stand unter dem Motto "Reinventing Quality" und fächerte sich nach der Keynote in die Tracks Process, Products, People und Special Topics. Zusätzlich war die Robocon zu Gast und stellte einen weiteren Track. Meine Auswahl an Vorträgen war eine persönliche und ich habe sicherlich in den parallelen Tracks Interessantes verpasst.


Mit der Keynote "Paradigmenwechsel! Neue Denkweisen, neue Ansätze für Management und Qualität in der VUCA-Welt" ( VUCA = Volatility, Uncertainty, Complexity, Ambiguity) hat Prof. Ayelt Komus den Rahmen für das Motto des QS-Tags abgesteckt. Seiner Analyse nach befinden wir uns im Übergang von der komplizierten in die komplexe Welt und "tradierte Ansätze" seien da möglicherweise "nicht nur wirkungslos, sondern kontraproduktiv". "Neue Rollen und ein neues Selbstverständnis von QM und QS-Prozess und -Rollen" müssten her.


Die Keynote fokussierte allerdings eher die Managementebene ("Erfolgreiches Managen im Komplexen"). So wundert es auch nicht, dass agile Skalierungsansätze (SAFe, LeSS, Nexus, Scrum@Scale, Spotify Model, Disciplined Agile) im Vordergrund standen.


Ein Schwerpunkt meiner Vortragsbesuche am ersten Tag waren nach der Keynote Testintelligenz und der Einsatz von künstlicher Intelligenz beim Testen.


“Test Intelligence” soll helfen, "auf Basis der eigenen Daten mehr Fehler in kürzerer Zeit zu finden". Dr. Elmar Jürgens stellte im gewohnt engen Publikumsdialog die Verwendung der statischen Analyse zur aktiven Steuerung des Testprozesses vor, insbesondere zu Feinabstimmung der Testabdeckung und der Ausführungsreihenfolge von Testsuiten. Praktisch wurde der Vortrag ergänzt durch einem Solution-Workshop, in dem der Referent mit einem Kollegen (Dr. Sven Aman) Test Intelligence im praktischen Einsatz mit dem Werkzeug Teamscale demonstrierte.

Einen eher allgemeineren Einstieg brachte Prof. Winter nach der Mittagspause mit "Testen und künstliche Intelligenz - wo stehen wir heute." Die in vielen Systemen eingesetzten Verfahren des Machine Learning wurden dargestellt, wobei insbesondere für den Test relevante Eigenschaften dieser Verfahren auch praktisch beleuchtet wurden. Der Vortragende musste neben inhaltlichen Herausforderungen auch technische bewältigen und hat sein Improvisationstalent bei den aufgetretenen Schwierigkeiten überzeugend zum Einsatz gebracht.


Mit "From Usage Analysis to Automated Regression Testing supported by Machine Learning: Experience Report" zeigte Prof. Legeard, University of Franche-Comté, einen weit entwickelten Einsatz von KI beim Testen. Machine Learning wird nicht nur zur Analyse des Benutzerverhaltens in der Praxis, zur automatisierten Ableitung von Testfällen auf dieser Basis, sondern auch zu Messung und Optimierung von Testläufen eingesetzt. Autonomous Testing scheint bei diesem Ansatz zum Greifen nah.


“Testsuiteoptimierung mit Machine Learning”: Dr. Gregor Endlers Erfahrungsbericht zeigte, wie mittels des Machine Learning Systems Scryer mit Echtwelt-Daten eines Großprojekts aus dem Bereich Medizintechnik Testsuites optimiert werden konnten. Der Einsatz von KI für die Steuerung des Ablaufs von Testsuiten ist offenbar in vergleichbaren Fällen eine Alternative zum Einsatz von Test Intelligence auf Basis statischer Analyse.


Im einzigen Vortrag zum Thema Testdaten:“Reinventing Test Data - Anonymization, Pseudonymization and Synthetic Data: A State of The Art Review”, präsentierte Christian Alexander Graf die Unterschiede zwischen synthetischen Daten und anonymisierten, bzw. pseudonymisierten Produktionsdaten. Detailliert ging er auf die Risiken der Pseudonymisierung persönlicher Daten ein, insbesondere auf Möglichkeiten der De-Anonymisierung. Zur Beherrschung von Offenlegungsrisiken pseudonymisierter Daten empfahl er eine differenzierte Testdatenstrategie.


Mit "Lästige Dokumentation ? Wie sollte eine Dokumentation sein, die alle lieben" beschrieb Andre Mainka praktische Erfahrungen bei der Einführung eines Repositories zur Dokumentation verschiedener Artefakte im Entwicklungs-und Testprozess. Der Zuhörer wurde mit auf eine Reise vom ersten Piloten bis zur erfolgreichen Migration in einem ganzen Projekt genommen. Am zweiten Tag bewegte ich mich im Track Prozesse und Products. Während Frau Dr. Klaudia Dussa-Zieger in ihrem Vortrag “Testen in DevOps - Was ist neu oder anders? “ eher methodische Aspekte in der DevOps-Acht beleuchtete, gab Michael Mirold in “Aktuelle agile Testpraktiken und -muster” einen Überblick über die zuletzt grundlegend gewandelten technischen Rahmenbedingungen des Testens. Beide Vorträge ergänzten sich, auch wenn die beiden Referenten zum Thema des jeweils anderen wenig Berührungspunkte sahen.


Nach Prof. Ayelt Komus besteht die Chance in der VUCA-Welt auf "Bessere, echte SW-Qualität, frühere und gelebte echte Einbindung, verbesserte Akzeptanz und Wertschätzung". Das sind allerdings keineswegs neue Hoffnungen und gerade von Seiten des GTB (Dr. Armin Metzger) wurden in der Panel-Diskussion “Agiles Testen 2022 - Herausforderungen und Handlungsbedarf “ wehmütige Erinnerungen an die "guten alten" Zeiten um 2010 laut, als die Agilität die Fortschritte methodischen Softwaretestens noch nicht zu unterlaufen begonnen hatte. Die in die Podiumsdiskussion einbezogenen Besucher aus dem Publikum relativierten diese Sicht allerdings.


FazitDas mit dem QS-Tag 2022 abgedeckte Themenspektrum war erheblich und die Gelegenheit zur persönlichen Kontaktaufnahme mit Testexperten nicht nur aus Deutschland ein unschätzbarer Vorteil. Aus meiner Perspektive wurden die mit dem Titel “Reinventing Quality” gesteckten Erwartungen nicht durchgängig erfüllt, insbesondere weil außer der Keynote die wenigsten Vorträge Bezug zum Thema des QS-Tags nahmen.

Gerne 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!

11. November 202211. November 2022 Artikel weiterempfehlen:

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? 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 GitHub

Gerne 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!

10. November 202210. November 2022 Artikel weiterempfehlen:

AI-Unterstützung von IoT-Tests durch trainierbare Bilderkennungssoftware

Lesedauer: 7 Minuten

In diesem Artikel möchten wir Ihnen ein Beispiele zeigen, wie das Testen von IoT-Geräten mittels AI-gestützter Bilderkennung unterstützt werden kann.

Vorstellung des ProjektsDas Testobjekt

In diesem Beispiel wollen wir automatisiert Informationen über den Zustand einer Kaffeemaschine herausfinden. Wir wollen anhand der Anzeige der Maschine automatisiert erfassen, ob der Wassertank in der Maschine eingesetzt wurde und ob sich eine Tasse unterhalb des Auslaufs befindet. Die Schwierigkeit besteht in diesem Beispiel darin, dass die Maschine keine expliziten Testschnittstellen für beide Testfälle anbietet. Es müssten hierfür Sensoren entwickelt und an der Maschine angebracht werden um diese Informationen automatisiert verarbeiten zu können. Dies ist sehr aufwendig, da dies technische Kenntnisse voraussetzt und die Testmethodik einen hohen Grad der Intrusion aufweist und somit einer erfolgreichen Automatisierung im Weg steht. Daher muss eine bessere Lösung gefunden werden.

Die Teststrategie

Wir wollen mit diesem Beispiel zeigen, dass sich mittels AI-gestützter Bilderkennungssoftware diese Testfälle automatisiert durchführen lassen. Hierfür entwickeln wir mittels des Frameworks Tensorflow ein Tool, welches zum einen aus Bildern des Displays der Kaffeemaschine erkennen kann, ob auf diesem eine Warnung wegen des nicht eingesetzten Wassertanks erscheint und zum anderen aus Bildern einer Frontalaufnahme der Kaffeemaschine erkennen kann, ob eine Tasse auf diesen Bildern zu sehen ist. Der Einsatz einer Bildklassifizierungssoftware ist hier sinnvoll, da wir eine begrenzte Anzahl von fest voneinander abgrenzbaren Zuständen haben.

Die Testschnittstelle

Für das automatisierte Testen ist es notwendig, dass die erfassten Daten der Bilderkennung von einer TAS (Test Automation Solution) genutzt werden können. Hierfür sollte es über eine API möglich sein, den Status der Kaffeemaschine abzufragen. Hier empfiehlt es sich eine spezialisierte REST-API zu entwickeln, die über die TAS Daten abfragen oder Daten aktiv durch die Bilderkennungssoftware in eine Datenbank schreiben kann.

Verwendete Technologien

Für die Erstellung des Modells, sowie die Anwendung des Modells auf den Bilddateien, wird die Programmiersprache Python und das Framework Tensorflow verwendet. Die REST-API kann ebenfalls mit Python und einem Framework wie etwa Flask implementiert werden. Es wurden keine kommerziellen Tools von Drittanbietern genutzt.

Erstellung des AI-Modells zur Erkennung der ZuständeTrainingsbilder erstellen

Zum Trainieren des Modells benötigen wir zunächst Bilder, die die Zustände unserer beiden Szenarien zeigen. Für den ersten Testfall benötigen wir zum einen Bilder, die das Display im Normalzustand und zum anderen die entsprechende Fehlermeldung bei fehlendem Wassertank zeigen. Für den zweiten Testfall werden entsprechend Bilder mit und ohne Tasse unter dem Auslauf benötigt. 

Hier sehen Sie eine Auswahl von Trainingsbildern für den ersten Testfall. In der oberen Bildreihe sehen Sie das Display im Normalzustand, unten das Display wenn der Wasserbehälter entfernt wurde. Für den ersten Testfall wurden jeweils 450 Trainings- und 150 Testbilder für jeden der beiden Fälle aufgenommen. Die Bilder wurden von einem Smartphone mit dem Serienbildmodus aufgenommen, daher stellte die Erstellung großer Bildmengen kein Problem dar. Bei der Aufnahme der Bilder wurde die Kamera bewegt und geneigt, sodass Bilder aus verschiedenen Blickwinkeln aufgenommen wurden.

Bild: AI - Bilderkennung (Klicken zum Vergrößern) [Quelle: Qytera] ×

Für den zweiten Testfall wurden Bilder von der Kaffeemaschine einmal mit und einmal ohne Tasse aus verschiedenen Blickwinkeln aufgenommen. Die Tasse wurde hierbei mehrmals an eine andere Position verschoben. Die Bilder wurden zudem aus verschiedenen Blickwinkeln aufgenommen, um eine gewisse Varianz im Trainingsdatenset zu erhalten. Würden die Bilder immer aus dem gleichen Blickwinkel aufgenommen könnte dies später zu schlechteren Ergebnissen bei der Bildklassifizierung führen.

Bild: AI - Bilderkennung - Training (Klicken zum Vergrößern) [Quelle: Qytera] ×

Training des Modells

Nachdem die Trainingsbilder erstellt wurden wird das Modell mit diesen trainiert und lernt dabei die Bilder verschiedener Zustände voneinander zu unterscheiden. Der Zeitaufwand des Trainingsprozesses steigt linear mit der Anzahl der Bilder. In unserem Beispiel haben wir das Modell auf einem Laptop mit einer Intel Core i5 CPU der zehnten Generation trainiert. Für das Training wurde keine Grafikkarte genutzt. Insgesamt benötigte das Training für die insgesamt 1200 Bilder des ersten Testfalls etwa 20 Minuten. Für den zweiten Testfall wurden insgesamt 2100 Bilder aufgenommen, das Training dauerte dementsprechend etwa 40 Minuten. Deutliche Performanceverbesserungen lassen sich beispielsweise schon durch die Verwendung einer Desktop-CPU erzielen. Mittels einer AMD Ryzen 7 CPU konnten die Trainingszeiten um fast 70 Prozent gesenkt werden. Steigt die Bildmenge noch weiter an sollte man zu einer Grafikkarte greifen, um die Zeit für das Training zu verringern. Verfügen Sie selbst nicht über entsprechende Grafikkarten können Cloud-Dienste wie etwa AWS SageMaker weiterhelfen.

Wartbarkeit des Modells

Bei einem AI-gestützten Tool muss vor allem darauf Wert gelegt werden, dass auch Anwender ohne Erfahrung im Bereich des maschinelles Lernens und in unserem konkreten Projekt ohne Erfahrung mit dem Framework Tensorflow den Trainingsprozess des Modells steuern und bedienen können. Tensorflow reduziert den Implementierungsaufwand des Trainingsprozesses bereits erheblich indem es eine API mit einer sehr abstrakten Sichtweise auf den Trainingsprozess anbietet. In unserem konkreten Projekt bauten wir wiederum eine eigene API um das Tensorflow-Framework herum, sodass für das Training des Modells lediglich eine vorgegebenen Benennung für die Verzeichnisse der Bilddateien befolgt werden muss, um neue Bildkategorien bzw. mehr Bilder für vorhandene Kategorien hinzuzufügen. Möchten die Tester:innen neue Bildkategorien hinzufügen, müssen sie dafür lediglich ein neues Verzeichnis anlegen und dort die Trainingsbilder ablegen. Das Modell interpretiert das neu angelegte Verzeichnis automatisch als neue Bildkategorie. Somit können die Tester:innen die AI-Software als Blackbox behandeln und benötigen keinerlei AI-Kenntnisse, um den Trainingsprozess zu starten bzw. um Bilder zu klassifizieren.

Ein AI-Engineer wird jedoch weiterhin unverzichtbar bleiben, wenn es um die Beurteilung der Performanz des Modells geht. Weist ein Modell beispielsweise hohe Trefferquoten auf einem Trainingsdatensatz, aber schlechte Trefferquoten im realen Einsatz auf, kann dies dafür sprechen, dass die Trainingsbilder nicht repräsentativ genug waren oder diese zu wenig Varianz aufwiesen. In unserem Beispiel hätte dies auftreten können, wenn die Kaffeemaschine immer nur aus dem gleichen Blickwinkel fotografiert worden wäre. In diesem Fall sollten Expert:innen zur Beurteilung der Trainingsdaten herangezogen werden.

Evaluation des Modells

Nachdem wir unser Modell trainiert haben müssen wir evaluieren, ob dieses korrekte Vorhersagen macht. Hierfür erstellen wir erneut Bilder, die wir dem Modell zeigen und für die das Modell eine Vorhersage macht. Wichtig ist bei der Evaluierung, dass das Modell Bilder gezeigt bekommt, die es im Trainingsprozess nicht gesehen hat. Somit wird sichergestellt, dass das Modell während des Trainings Informationen über die Bilder gelernt hat, die nicht nur auf die Trainingsbilder anwendbar sind sondern so gut generalisieren, dass diese Informationen auch auf neue, noch nicht gesehene Bilder anwendbar sind.

In unserem Test erreichten wir eine Trefferquote von 100% für die beiden Szenarien. Diese hohen Werte sind vor allem dadurch möglich, da wir beim Training des Modells auf Transfer Learning setzten - ein Verfahren, bei dem große Unternehmen wie etwa Google oder Microsoft Modellarchitekturen entwickeln und auf einem großen Datensatz vortrainieren und diese vortrainierten Modelle Anwendern zur Verfügung stellen.

Nutzung des Modells in einer ProduktionsumgebungAufbau der Produktionsumgebung

Zunächst muss vor der Kaffeemaschine eine Kamera angebracht werden. Hierfür lassen sich beispielsweise Werkzeuge wie ein Raspberry Pi verwenden, da dieser bereits über eine Kameraschnittstelle verfügt und die erzeugten Daten auf dem Raspberry Pi direkt weiterverarbeitet werden können. Auf dem Raspberry Pi wird außerdem das AI-Modell zur Erkennung der Zustände der Kaffeemaschine aufgesetzt, welches die Bilder des Kameramoduls entgegennimmt und die Bilder klassifiziert (Normalbetrieb / Wasser auffüllen) bzw. ( Tasse vorhanden / Tasse nicht vorhanden). Nach der Klassifizierung der Aufnahme stellt der Pi diese Informationen über eine REST-API zur Verfügung, über welche die TAS diese abfragen kann.

Bild: AI - Bilderkennung - Modell (Klicken zum Vergrößern) [Quelle: Qytera] × Verfeinerung der Testmethode durch Objekterkennung in Bildern

In unserem Beispiel haben wir immer das gesamte aufgenommene Bild zur Klassifizierung verwendet. Das verwendete Modell konnte jeweils nur das gesamte Bild klassifizieren (Tasse / keine Tasse bzw. normale Displayanzeige / Wassertank auffüllen). Für einige Use Cases ist eine einfache Bildklassifizierung möglicherweise jedoch nicht ausreichend. Von Interesse könnte ebenfalls sein, ob bestimmte Elemente auf dem Display zu sehen sind, wie etwa die Symbole für Kaffee, Espresso, etc. und auch an welcher Stelle diese zu sehen sind. Dies kann sinnvoll sein, da diese Symbole auch in anderen Kontexten auf dem Display erscheinen, beispielsweise wenn die entsprechende Kaffeesorte ausgewählt wurde und der Kaffee zubereitet wird. Für diesen Use Case haben wir einen Objekterkennungsalgorithmus namens YOLO (You Look Only Once) auf fünf Symbole des Displays trainiert: Kaffee, Espresso, Cappuccino, Heißwasser und das Symbol für das Einsetzen des Wassertanks. Anschließend wurde das trainierte Modell auf eine Videoaufnahme des Displays angewendet. In dem Video wird der Wassertank der Kaffemaschine mehrmals aus der Maschine herausgezogen, sodass das Display abwechselnd die Kaffee-Symbole und den Hinweis zum Einsetzen des Wassertanks zeigt. Der Algorithmus ist nun in der Lage zu erkennen , wann und wo im Video die jeweiligen Symbole zu sehen sind. Das Resultat sehen Sie in folgendem Video:

In einem weiteren Test haben wir den Algorithmus auf die Erkennung unseres Unternehmenslogos trainiert. Ein beispielhaftes Ergebnis dieses Tests sehen Sie in folgendem Bild:

Bild: AI - Bilderkennung - Logo erkennen (Klicken zum Vergrößern) [Quelle: Qytera] × Potential der AI-gestützten Bildverarbeitung

Wie wir anhand dieses Beispielprojekts gezeigt haben können mittels AI-gestützter Bilderkennung Objekte getestet werden, die sich bislang der Testautomatisierung durch fehlende Schnittstellen entzogen haben. Die Bildklassifizierung bietet vor allem bei Anwendungsfällen Potential, bei denen Zustände eines IoT-Geräts anhand von optischen Merkmalen erkannt werden können. Einige denkbare Use-Cases haben wir hier aufgelistet:

Weitere beispielhafte Use Cases

Automatisches Auslesen von Displayinformationen LCD-Displays (Haushaltsgeräte, Industriemaschinen, 7-Segment-Anzeigen) Status-LEDs (leuchtet / leuchtet nicht) Armaturenbrett auslesen (Feststellung ob das Symbol für die Handbremse leuchtet) Testen auf Vorhandensein von Objekten in Bildern Automatische Validierung von Screenshots, welche im Testprozess entstanden sind (Welchem Testschritt ist der Screenshot zuzuordnen?) Testen, ob auf einem Screenshot ein bestimmtes Element zu sehen ist (Button, Formular, etc.) Bestimmung der Anzahl und Position bestimmter Objekte auf einem Bild Testen, wie viele Objekte eines Typs auf einem Screenshot zu sehen sind und wo diese sich befinden Bestimmung der Anzahl und der Art von Objekten auf einem Fließband in einer Fertigungsanlage Klassifizierung von Dokumenten anhand Logos / Bildern / anderer graphischer Informationen auf den Dokumenten Viele eingescannte Dokumente sollen automatisch klassifiziert werden Prüfen, ob eine Unterschrift auf einem Dokument vorhanden ist

Risiken der AI-gestützten Bildverarbeitung

Zu den Risiken der AI-gestützten Bilderkennung zählt, dass Modelle, die mit einem kleinen Datenset trainiert wurden (einige dutzend Bilder pro Kategorie), sensibel auf Änderungen der Eingabebilder reagieren. Ändern sich Elemente auf dem LCD-Display im Laufe der Entwicklung des Testobjekts, wie in unserem Fall der Kaffeemaschine, kann das die Qualität der Vorhersage der AI beeinflussen. AI-Lösungen bieten sich daher an, wenn das Entwicklungsprojekt bereits eine gewisse Stabilität erreicht hat. Für Regressionstests wäre ein AI-Tool hervorragend geeignet, da bereits bekannte Testergebnisse überprüft werden können. Doch auch während der Entwicklung des Testobjekts kann mit dem Aufbau einer AI-Lösung begonnen werden. Es können bereits automatisierte Pipelines für das Trainieren der Modelle auf dem Bildmaterial angelegt, sowie Bilder für das Training der Modelle erstellt werden. Generell gilt, dass die Trainingsbilder stets mit den tatsächlichen optischen Merkmalen der Kaffeemaschine übereinstimmen müssen.

Die AI-Pipeline im Betrieb

Während des Testprozesses sollte die Klassifizierung der Bilder durch die AI überprüft werden. Dies kann zum Teil automatisiert geschehen, indem Bilder, für die die AI keine eindeutige Klassifizierung vornehmen kann, zunächst an einem separaten Ort abspeichert und diese später manuell einer Bildkategorie zuordnet und anschließend dem Trainingsdatenset hinzufügt werden. Anschließend kann die AI auf dem erweiterten Datenset erneut trainiert werden, wodurch das Risiko von falsch klassifizierten Bildern im Laufe Zeit immer weiter gesenkt wird.

Fazit

AI-gestützte Bildverarbeitung bietet ein großes Potential in der Testautomatisierung bei der Beobachtung von IoT-Geräten, die nur unzureichend automatisierbare Testschnittstellen zur Verfügung stellen. Mittels AI-Werkzeugen werden alle denkbaren Ausgaben des IoT-Gerätes, sei es von einfachen Status-LEDs bis hin zu LCD-Displays zu Testschnittstellen, die mit einem minimalen Grad der Intrusion abgefragt werden können. Das gesamte physische Gerät wird somit zu einer testbaren UI.

Gerne 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 by macrovector on Freepik

25. Oktober 202201. November 2022Finden Sie weitere interessante Artikel zum Thema:  Artikel weiterempfehlen:

Testautomatisierung mit Cypress - Automatisierte UI-Tests

Lesedauer: 5 Minuten

In diesem Artikel möchten wir Ihnen das Testingframework Cypress vorstellen. Bei Cypress handelt es sich um ein Framework zum Testen von Webanwendungen oder von in JavaScript geschriebenen Komponenten. Die verwendete Plattform von Cypress ist Node.JS, die Sprache zum Schreiben der Testfälle ist JavaScript. Cypress wurde für zwei mögliche Anwendungsfälle entwickelt: Für End-to-End Tests von Webanwendungen und für Unit Tests für JavaScript-Code.

Installation

Die Installation von Cypress gestaltet sich sehr einfach. Hierzu muss lediglich die Plattform Node.JS auf Ihrem PC installiert sein. Anschließend können Sie in einem beliebigen JavaScript-Projekt Cypress mittels eines einzigen Befehls installieren. Während des Installationsvorgangs bietet Cypress Ihnen eine graphische Benutzeroberfläche, mittels derer Sie die Konfiguration von Cypress vornehmen können. Dies gestaltet den Installationsvorgang sehr einfach, da das Setup von Cypress automatisiert durchgeführt wird und Sie nach dem Installationsvorgang direkt mit dem Schreiben Ihrer Testfälle starten können. Nebenbei unterstützt Cypress die gängigsten Browser wie etwa Firefox, Edge und Chrome. Es müssen keine Treiber für die unterstützen Browser installiert werden, da Cypress sich um die Treiberverwaltung kümmert. Auch dies erleichtert das Aufsetzen einer Testumgebung.

Testfälle in CypressAufbau von Testfällen

Testfälle in Cypress werden in Szenarien organisiert. Ein Szenario beschreibt hier ein abstraktes Feature bzw. einen Prozess der Website, wie etwa einen Loginprozess. Innerhalb der Szenarien lassen sich Testfälle definieren, die wiederum Testschritte enthalten.

Das Schreiben von Testfällen in Cypress folgt dem Ansatz der strukturierten Skripterstellung. Die Testfälle werden in reinem JavaScipt-Code verfasst, jedoch stellt Cypress eine umfangreiche Bibliothek zum Abfragen und Manipulieren der Website zur Verfügung.

Wiederverwendbarkeit von Testskripten

Dadurch, dass Testfälle in Cypress in reinem JavaScript-Code geschrieben werden, ist es möglich, Testschritte in Funktionen zu kapseln und in anderen Testfällen wiederzuverwenden. Hierzu sollten die Tester:innen über solide Grundkenntnisse der Programmierung und der Modularisierung von Code verfügen. Es lassen sich somit auch parametrisierbare Funktionen implementieren, was ein nützliches Feature für strukturell ähnliche Testfälle ist.

Ausführung von Testfällen

Cypress stellt zum Ausführen von Testfällen eine graphische Benutzeroberfläche bereit. In dieser können Testfälle gestartet und bei der Ausführung beobachtet werden. Cypress zeigt zum einen die Reihenfolge der Testschritte und zum anderen die aktuelle Ansicht des Browsers an. Nach Ausführung des Testfalls können Sie einzelne Testschritte anklicken und sich Screenshots des jeweiligen Browserzustands zum Zeitpunkt der Ausführung des Testschritts anzeigen lassen. Dies ermöglicht ein gutes Debuggen von Testfällen.

Bild: Cypress - Ausführung von Testfällen (Klicken zum Vergrößern) [Quelle: Qytera] × ReportingKonsolenausgabe

Zunächst bietet Cypress die Möglichkeit an, den Testfortschritt über die Konsole auszugeben. So wird der Anwender über den aktuellen Fortschritt der Ausführung der Testsuite informiert. Dies kann vor allem in CI/CD-Pipelines ein nützliches Feature sein, um den Fortschritt der Ausführung beurteilen zu können. Für jedes Szenario wird dabei folgende Ausgabe erzeugt:

Bild: Cypress - Konsolenausgabe (Klicken zum Vergrößern) [Quelle: Qytera] ×

Am Ende der Ausführung gibt Cypress eine Zusammenfassung der Ergebnisse der Testszenarien aus.

Bild: Cypress - Konsolenausgabe (Klicken zum Vergrößern) [Quelle: Qytera] × Screenshots

Cypress erstellt Screenshots für fehlgeschlagene Testfälle. Hier sehen Sie einen Screenshot eines fehlgeschlagenen Login-Testfalls:

Bild: Cypress - Screenshots (Klicken zum Vergrößern) [Quelle: Qytera] ×

Cypress erlaubt es dem Nutzer jedoch auch, manuell Screenshots zu erstellen. Es können jedoch nicht nur Screenshots des vollständigen Bildschirminhalts, sondern auch Bilder von bestimmten HTML-Elementen aufgenommen werden. Hierzu müssen die Tester:innen lediglich den Selektor des Elementes angeben. In unserem Beispiel haben wir so beispielsweise einen Screenshot des Loginformulars und der Topbar aufgenommen, wie sie in folgenden Bildern zu sehen sind.

JSON Logfiles

Ein wichtiger Aspekt bei der Testautomatisierung ist die maschinell lesbare Dokumentation eines Testlaufs. Hierfür bietet Cypress Reports im JSON-Format an, einem gängigen Format zum Abspeichern strukturierter Daten.

HTML Report

Bei einem Testautomatisierungswerkzeug spielt ebenfalls die Dokumentation in einem für die Anwender:innen lesbaren Format eine wichtige Rolle. Hierfür bietet Cypress ein Plugin zum Erstellen von HTML-Reports an. Ein Beispiel eines HTML-Reports können Sie in folgendem Bild sehen. Es wurden zwei Unit-Tests sowie fünf weitere E2E-Testfälle ausgeführt. Für die nicht bestandenen Testfälle enthält der HTML-Report die Fehlermeldungen. Beim Unit-Tests sowie bei den E2E-Testfällen sind dies die erwarteten und die tatsächlich erhaltenen Ergebnisse, bzw. die aufgetretene Fehlermeldung.

Bild: Cypress - HTML Report (Klicken zum Vergrößern) [Quelle: Qytera] × Video-Mitschnitte

Cypress bietet unter anderem einen Videomitschnitt der Testfälle an. Dieser lässt sich über ein Konfigurationsfile aktivieren und zeichnet für jedes Testszenario ein Video auf. Im Videomitschnitt ist die graphische Benutzeroberfläche von Cypress zu sehen, d.h. der aktuelle Testschritt und die Ansicht, die derzeit im Browser zu sehen ist. Ein Beispiel aus einem Videomitschnitt sehen Sie in folgendem Bild:

Bild: Cypress - HTML Report (Klicken zum Vergrößern) [Quelle: Qytera] × Testmanagement: Anbindung an Jira Xray

Für Cypress existieren Plugins, welche es erlauben, Testberichte im JUnit-XML-Format zu erstellen. Dies ist eine sehr nützliche Funktion, da viele Testmanagementwerkzeuge wie etwa Xray den automatisierten Import dieser Berichte unterstützen. Der von Cypress erzeugte Bericht kann direkt über eine REST-API in Xray geladen werden. Xray legt hier automatisch neue Testfälle an, falls es die Testergebnisse aus dem Bericht keinem vorhandenen Testfall zuordnen kann. Bei Wiederholung des Testlaufs und erneutem Importieren der Testergebnisse kann Xray diese den bereits angelegten Testfällen zuordnen. Ein kleines Manko des JUnit-Plugins für Cypress ist die fehlende Berichterstattung auf Step-Ebene und die fehlende Unterstützung für die Integration von Screenshots im Bericht. Sollten Screenshots in Xray dokumentiert werden, müssten diese durch eine eigens programmierte Lösung hochgeladen werden.

Nutzer:innen, die bereits mit Selenium vertraut sind dürfte der Umstieg auf Cypress nicht schwerfallen. Die Gliederung der Testfälle in Szenarien, Tests und Testschritte wird so auch in bekannten Java-Frameworks wie etwa JUnit oder TestNG implementiert. Die Cypress-Bibliothek und deren Benennung der Methoden zum Abfragen und Manipulieren der Website ähnelt der von Selenium stark. So gibt es zunächst Methoden zum Selektieren von Elementen der Website sowie Methoden zum Ändern bzw. Manipulieren von Elementen.

Vorteile gegenüber Selenium

Cypress besitzt gegenüber Selenium den Vorteil, dass eine Testumgebung automatisiert aufgesetzt wird. So muss bei einem Seleniumprojekt zunächst der passende Treiber für einen Browser installiert werden, was in einer Testumgebung eine potentielle Fehlerquelle sein kann, besonders wenn die Testumgebung häufig migriert oder in einem CI/CD-Prozess kontinuierlich erstellt und wieder heruntergefahren wird. Hier bietet die Community zwar Unterstützung durch Module, die das Treibermanagement übernehmen können, jedoch ist die Verwaltung der Browsertreiber durch Cypress eleganter gestaltet.

Ein weiterer Vorteil von Cypress gegenüber Selenium ist die deutlich schnellere Ausführungsgeschwindigkeit. Cypress kommuniziert mit Browsern nicht über das Webdriver-Protokoll und somit über eine Netzwerkverbindung, sondern es integriert sich direkt in den Prozess des Browsers. Testfälle werden automatisiert neu gestartet, sobald Änderungen am entsprechenden Code des Testfalls durchgeführt werden, wodurch sich die Tester:innen voll und ganz auf das Schreiben von Testfällen konzentrieren können.

Noch einen weiteren Vorteil bietet Cypress gegenüber Selenium durch automatisierte Waits. In Selenium-Projekten müssen Waits oft manuell definiert werden, d.h. es muss auf das Erscheinen eines bestimmten Elements gewartet werden. In Cypress-Testfällen wird diese Funktion automatisch implementiert, es müssen keine Waits manuell definiert werden. Sofern ein Element der Website nicht gefunden wird, geht Cypress automatisch davon aus, dass auf dieses Element gewartet werden muss.

Nachteile gegenüber Selenium

Ein gravierender Nachteil von Cypress gegenüber Selenium ist die fehlende Unterstützung des Safari-Browsers, Opera und des Internet Explorers. Während die fehlende Unterstützung für den Internet Explorer noch verkraftbar ist, da der Internet Explorer nicht mehr weiterentwickelt wird und langsam vom Markt verschwindet, ist die fehlende Unterstützung von Safari und Opera ein Problem, da dies gängige Browser sind, die in der heutigen Browserlandschaft häufig anzutreffen sind.

Ein weiteres Feature, welches Selenium gegenüber Cypress bietet, ist die Unterstützung von End-to-End-Tests gegen mobile Geräte mit dem Betriebssystem Android und iOS. Mit Selenium können Sie gemeinsam genutzte Testbibliotheken für den Test mobiler Geräte und den Test von Webanwendungen schreiben, für Cypress ist dies nicht möglich.

Testautomatisierung mit Cypress: Fazit

Cypress ist eine gelungene vollautomatisierte Testumgebung, die den Tester:innen die Einrichtung und den Betrieb einer Testumgebung sehr erleichtert. Die Installation und der Betrieb von Cypress können mit minimalen Aufwand erledigt werden, wodurch sich die Anwender:innen voll und ganz auf das Erstellen und Verwalten von Testfällen konzentrieren können.

Der Aufwand bei der Implementierung der Testautomatisierung zahlt sich langfristig um ein Mehrfaches wieder aus und sie können die frei gewordenen Kapazitäten in anderen Bereichen zum Einsatz bringen.

Gerne 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!

16. September 202216. September 2022Finden Sie weitere interessante Artikel zum Thema:  Artikel weiterempfehlen:

Die besten API Testing Tools im Überblick - Testautomatisierung von REST APIs

In den letzten Jahren entwickelten sich in der Softwareentwicklung viele neue Ansätze, um die höhere Integration der eingesetzten Softwarelösungen und die immer höhere Verarbeitungsgeschwindigkeit, die der Endkunde mehr und mehr erwartet, zu erfüllen. Dadurch mussten einheitliche Schnittstellen geschaffen werden und hierfür idealerweise standardisierte Protokolle Verwendung finden.

Durch die immer größer werdende Vernetzung und damit der Einzug des HTTP-Protokolls, wurden auf dieser Basis unterschiedliche Schnittstellen entwickelt, die beiden populärsten sind die SOAP API und REST API.

In diesem Beitrag möchte ich einige populäre API Testautomatisierung Tools vorstellen, die wir erfolgreich in Projekten einsetzen konnten und auch immer wieder bei Kunden vorfanden.

1. SoapUI von Smartbear

SoapUI hat sich im Laufe der letzten Jahren sozusagen zu dem Standard-Testtool etabliert, um SOAP-, REST Webservices zu testen. SoapUI bietet eine komfortable Möglichkeit, die REST-Requests aus einer bestehenden WADL zu generieren oder nur eine URI einzugeben. SoapUI generiert und extrahiert daraus automatisch den Endpunkt, die Ressourcen und die Query-Parameter.

Das Testautomatisierungs-Tool bietet auch die Möglichkeit, gerade bei komplexeren Testschritten und sehr neuen Technologien, Groovy-Scripte einzubinden. Mit "Groovy TestStep" ist es möglich, sein eigenes Groovy-Testscript als Teil eines Testfalls zu implementieren. Darüber hinaus stehen sämtliche APIs von JRE und SoapUI zur Verfügung.

Die Funktionen von SoapUI sind:
  • Funktionstests von Webservices
  • Testautomatisierung von Webservices
  • Service Simulation (Mocking)
  • Lasttest und Performancetest
  • Analyse und Reporting von REST und SOAP APIs
  • Recording von Requests und Daten

SoapUI unterstützt Webservice Technologien wie SOAP/WDSL, REST, HTTP(S), JDBC, JMS. Es bietet Integration in Entwicklungsumgebungen wie IntelliJ IDEA, NetBeans, Eclipse und Buildtools wie Jenkins, Apache ANT, Bamboo, JUnit und Apache Maven Project.

Weitergehende Informationen finden Sie auch in unserem weiteren Blogbeitrag zu Testautomatisierung mit SoapUI.

2. Postman

Fast ebenso mächtig wie SoapUI ist das Tool Postman. Dieses Werkzeug wird vom Hersteller als Standalone Client oder als Browser AddOn zur Verfügung gestellt. Es bietet hervorragende Möglichkeiten, REST-API-Aufrufe zu erstellen und ganze Szenarios zu gestalten, die für die Entwicklung, wie auch für die REST API Tests, Verwendung finden.

Postman bietet ein recht einfaches Werkzeug für den Umgang mit APIs, da es sich vollständig über eine GUI bedienen lässt. Es lassen sich leicht API Aufrufe erstellen, parametrisieren und ausführen. Die Ergebnisauswertung wird unterstützt, indem die Requests und Responses in unterschiedlicher Form dargestellt werden können und somit lesbarer werden.

Bild: REST API Aufruf in Postman. (Klicken zum Vergrößern) [Quelle: Postman]

× Die Funktionen von Postman sind:
  • Unterstützung bei der Dokumentation der APIs
  • Debugging und manuelles API Testing
  • API-Monitoring
  • Automatisierte Funktionstests von Webservices für REST, SOAP und GraphQL
  • Entwerfen und Mocken sowie Bereitstellung von APIs
  • Teamwork-Funktionalitäten
  • Ausführliche und interaktive Übungen zum Lernen der Funktionalitäten

Anbieterseite: getpostman.com

Webinar: Testautomatisierung von REST-APIs und Microservices - Postman, JUnit, Mockito 3. Fiddler Everywhere von Progress Telerik

Auch mit dem Web Debugging Proxy Werkzeug Fiddler Everywhere lassen sich Web API Tests erstellen und automatisiert testen. Für den Einstieg ins API Testing bietet Fiddler eine einfache und leichtgewichtige Möglichkeit Requests zu erstellen und diese auszuführen. Die große Stärke liegt aber im Zusammenspiel von den (aufgezeichneten) Sessions mit der Auto Responder Funktionalität, die es regelbasiert ermöglicht vorgefertigte Responses abzusenden.

Bild: REST API Aufruf in Fiddler Everywhere. (Klicken zum Vergrößern) [Quelle: Fiddler Everywhere]

× Die Funktionen von Fiddler Everywhere sind:
  • HTTP/HTTPS Webproxy zur Aufzeichnung des Datenverkehrs
  • Web Debugging
  • Netzwerkverkehr mocken und automatische Antworten generieren
  • Team Kollaboration über geteilte Sessions

Weitere Informationen finden Sie in unserem Blogbeitrag zu Fiddler Everywhere.

4. Katalon Studio

Eine starke Integration in die IDE von Katalon, das über BDD und TDD einen anderen Ansatz geht als die zuvor vorgestellten Tools, zeigt einen etwas anderen Implementierungsansatz von API Testing. Assistentgestützt werden hier die API Requests erstellt und im Testprojekt hinzugefügt. Es lassen sich im Assistenten oder auch später die Verifikationen programmatisch ergänzen, so dass hier eine gewisse Erfahrung in Programmierung notwendig wird.
Dennoch ist gerade die Katalon Studio Integration sehr gelungen und mit dem BDD und TDD Ansatz ein Mehrwert für das Projekt zu sehen.

Bild: REST API Integration im Katalon Studio. (Klicken zum Vergrößern) [Quelle: Katalon]

×

Für die ersten Umsetzungen bietet der Hersteller das Katalon Studio kostenfrei an und nur wer weitere Funktionen benötigt, wie Teamkollaboration, muss zu einer kostenpflichtigen Version wechseln. Weiterführende Informationen zur Umsetzung finden Sie in der Hersteller-Dokumentation.

5. ReadyAPI von Smartbear

Vom Hersteller der sehr bekannten API Implementierung Swagger (früher OpenAPI) und dem oben genannten SoapUI gibt es eine Reihe von Tools zur Unterstützung der API Entwicklung und des REST API Testens. In der Lösung ReadyAPI sind die wichtigsten Tools für das API Testing gebündelt worden. Hier sind die funktionalen und nicht funktionalen API Tests über nahezu alle Teststufen integriert worden. So können Sie hier Unittest der APIs vornehmen, aber auch Last- und Performance Tests.

Alternative Testtools/Werkzeuge für das Testen von API wie REST und SOAP

Neben den zuvor genannten spezialisierten Werkzeugen für SOAP oder REST API Testing können auch folgende Tools für die Testautomatisierung von Webservices in Betracht gezogen werden.

1. JMeter - Performance Monitoring Tool

Die in Java geschriebene Open-Source-Software von Apache ist die wohl populärste unter den kostenlosen Performance-Testtools. JMeter unterstützt verschiedene Protokolle wie HTTP, HTTPS, SOAP, REST, FTP, JDBC, LDAP, JMS, SMTP, POP3 und Datenbanken via JDBC. Für Tests von Webservices steht nur ein geringer Funktionsumfang zu Verfügung. Aber gerade das REST API Testing oder SOAP Testing ist für Last & Performance Testing Tools sehr naheliegend, da bei diesen Tools auch ohne GUI getestet wird.

2. Swagger Inspector von Smartbear

Mit dem etwas einfacher gehaltenen Tool Swagger Inspector lassen sich Rest APIs einfach debuggen und so gerade für einen manuellen Test gut einsetzen. Dieses Werkzeug läuft komplett im Browserfenster ab und benötigt deshalb keine Installation. Somit kann bei kurzen und nicht nachhaltig zur Verfügung gestellten Rest API Tests dieses Tool zum Einsatz kommen. Weiterführende Informationen finden Sie beim Hersteller.

3. Postman Interceptor (Browser Plugin)

Postman lässt sich auch als ein Chrome Plugin einsetzen und setzt daher die Installation des Google Chrome Browsers voraus. Anschließend kann es aus dem Google-Web-Store als Extension installiert werden. Wir verwenden Postman eher um API bzw. RESTful Services auszuprobieren. Damit lässt sich sehr schnell ein Request (GET, POST, Basic Auth, Oauth) absetzen.

4. REST-assured - Testautomatisierung

Auch für Ihre REST API Tests in JAVA gibt es Erweiterungen wie REST-assured, die Sie in Ihrem Projekt unterstützen, einfache Tests gegen REST Schnittstellen zu entwickeln. Hierbei erhalten Sie eine einfache Beschreibungssprache um Ihre Validierungen gegen die Server Responses im JSON-Format durchzuführen. Weitergehende Informationen finden Sie auf der Anbieterseite oder in diesem Tutorial.

5. Karate - Testautomatisierung

Eine sehr interessante Entwicklung stellt Karate dar, die erst seit 2017 auf dem Markt ist. Dieses Framework verbindet die unterschiedlichsten Testarten, von API Testautomation, Mocks, Last & Performance Testing bis hin zur UI Automation in einer einheitlichen Bibliothek. Somit soll für einen Softwaretester eine einheitliche Sprache für all seine automatisierten Tests etabliert werden. Als Besonderheit ist die konsequente Verwendung von BDD, angelehnt an Cucumber/Gherkin, zur Testfallbeschreibung zu sehen. Es lässt sich leicht über Maven/Gradle in sein Testprojekt in der IDE integrieren.

Bild: Karate Beispiel eines REST API Tests. (Klicken zum Vergrößern) [Quelle: Karate]

Fazit

Diese Liste der Top-Tools für die Testautomatisierung von REST APIs hier ist nicht vollständig. Es stellt jedoch die besten Tools dar, die ausgereift und beliebt sind. Der Aufwand bei der Implementierung der Testautomatisierung zahlt sich langfristig um ein Mehrfaches wieder aus und sie können die frei gewordenen Kapazitäten in anderen Bereichen zum Einsatz bringen.

Gerne 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!

11. August 202222. September 2022Finden Sie weitere interessante Artikel zum Thema:  Artikel weiterempfehlen: