Ein Framework für automatisierte Tests mit ProcessMaker + Selenium + Github

automatisiertes Testen

In der heutigen modernen Ära der Softwareentwicklung sollten alle gut geführten Softwareentwicklungsteams den Wert von Tests verstehen. Neue Anwendungen sollten mit einer nahezu perfekten Unit-Test-Abdeckung für automatisierte Tests erstellt werden. Außerdem sollten browserbasierte Funktionstests mit Open-Source-Tools wie Selenium vollständig automatisiert werden, um bekannte Muster menschlicher Interaktion zu erfassen.

Die Herausforderungen bei der Integration von Funktionstests in CI/CD

Funktionale Anwendungsfälle entwickeln sich im Laufe der Zeit und ändern sich regelmäßig, wenn die Anwendungsfälle einer Software-Suite wachsen und sich weiterentwickeln. Infolgedessen haben viele Unternehmen Probleme damit, einen sich ständig weiterentwickelnden Satz von Selenium-Tests als Teil einer automatisierten Test- und Bereitstellungspipeline auszuführen. 

Insbesondere in der heutigen Welt der SaaS-Software haben viele mandantenfähige SaaS-Anwendungen ganze Suiten von Selenium-Tests, die ausgeführt werden müssen, bevor ein neuer Mandant bereitgestellt wird. Diese Tests sollten als Teil der automatisierten Pipeline der eigentlichen Tenant-Bereitstellung ausgeführt werden.

Die Realität ist jedoch, dass die meisten SaaS-Unternehmen dies nicht tun. Das Ergebnis sind ständige Inkonsistenzen bei der Bereitstellung von Tenants oder privaten Clouds.

Was ist also die Lösung? 

Obwohl Selenium ein effektiver und beliebter Weg ist, um browserbasierte Tests zu automatisieren, benötigen Unternehmen eine Möglichkeit, um die Einbindung von ordnungsgemäß versionierten Selenium-Test-Buckets in Bereitstellungspipelines zu automatisieren.

ProcessMaker ist eine ideale Lösung für die Automatisierung einer Deployment- und Provisioning-Pipeline von Selenium-Tests direkt aus deren Repositories in Github. Schauen wir uns an, wie dies geschehen kann.

Selenium-Test-Suiten in Github

Stellen Sie sich ein Unternehmen vor, das einen Eimer mit automatisierten Selenium-Tests hat, die als Python-Dateien in GitHub gespeichert sind. Diese Python-Dateien müssen jedes Mal ausgeführt werden, bevor ein neuer Workspace-Tenant oder eine Private-Cloud-Installation bereitgestellt wird. Wenn einer der Testfälle fehlschlägt, wollen wir sicherstellen, dass die Bereitstellung nicht fortgesetzt wird.  

Außerdem ist uns bewusst, dass sich die Testfälle ständig ändern und weiterentwickeln. In diesem Fall haben wir mehrere Teams, die in der Lage sein wollen, Tests zu einem versionierten Repo beizusteuern, und wir wollen sicher sein, dass unsere Selenium-Tests immer mit der neuesten stabilen und genehmigten Version der Tests ausgeführt werden.

In diesem Fall werden die Tests mit Selenium durchgeführt. Selenium ist natürlich ein äußerst beliebtes Open-Source-Tool, das von Entwicklern auf der ganzen Welt verwendet wird. Mit Selenium können Sie jede Aufgabe in Ihrem Browser automatisieren. Darüber hinaus unterstützt es Chrome, Firefox, Safari, IE und Mozilla. 

In ProcessMaker haben wir einen Bereitstellungs-Workflow erstellt, der das entsprechende Selenium-Test-Harness von Github abruft, es ausführt, auf Probleme prüft und dann, wenn alles funktioniert, eine Lambda-Funktion aufruft, um einen neuen AWS-Server mit dem geprüften Code bereitzustellen.

ProcessMaker bietet uns eine visuelle Darstellung des Workflows und die Möglichkeit, Leistung, Zeit und Fehler zu verfolgen. So sieht der Arbeitsablauf in einem Unternehmen aus, das ProcessMaker derzeit auf diese Weise nutzt:

Flexibilität ist der Schlüssel zum Testmanagement. ProcessMaker macht es einfach, Testfälle neu zu gruppieren und umzustrukturieren, so dass Sie die Wartbarkeit verbessern und gleichzeitig die Komplexität und Duplizierung verringern können. Mit den benutzerfreundlichen Werkzeugen von ProcessMaker können Sie die Testausführungszeit reduzieren und sogar mehrere Tests parallel durchführen. 

Mit ProcessMaker werden Selenium-Tests aus dem Code-Repository gezogen und durch eine Reihe von Script-Aufgaben in ProcessMaker ausgeführt, die den Test durch ein Selenium-Docker-Image leiten und die Testergebnisse in der Anfrage speichern. 

Ein Teil der Schönheit von ProcessMaker ist, dass es Daten als ein sehr leichtgewichtiges, unstrukturiertes und einfach zu verstehendes Json-Objekt verwaltet. Während der Lebensdauer einer Anfrage (einer Prozessinstanz) kann dieses Json-Objekt Daten aus vielen verschiedenen Quellen empfangen. Im Falle der Selenium-Tests werden die Ergebnisse, die von den Selenium-Tests zurückgegeben werden, einfach in das Json-Objekt eingefügt. Je nachdem, wie unser Workflow funktionieren soll, können wir dann externe Regeln oder Gateways verwenden, um die Ergebnisse auszuwerten und zu ändern, was im Workflow passiert.

Zur Veranschaulichung: ProcessMaker kann so konfiguriert werden, dass er Folgeaktionen ausführt, wenn die Testergebnisse == "Erfolg" zurückgeben. Am Gateway werten wir die Variable "results" aus. Wenn die Ergebnisse erfolgreich waren, haben wir den Workflow so konfiguriert, dass er ein neues Skript tast aufruft, das die Lambda-Funktion ist, mit der wir einen neuen Tenant (Arbeitsbereich) aufsetzen. Wenn die Ergebnisse "Fehlschlag" zeigen, würden wir nicht mit dem Spinning des Tenants fortfahren. In diesem Fall sollten wir die Details des Fehlers in einem Slack-Kanal oder per E-Mail über ProcessMaker-Konnektoren für Slack oder E-Mail posten.  

Wenn wir ProcessMaker als Test-Harness einsetzen, können wir jede kundenspezifische Anwendung testen, bevor wir sie auf einem Server für einen Kunden implementieren. Wir erhalten Flexibilität bei komplexen Arbeitsabläufen und die Möglichkeit, Tests nach Bedarf zu skalieren und abzufeuern. 

Prozessausführung über die ProcessMaker API

Da die Prozessausführung über API-Aufrufe erfolgen kann, kann die Verwendung von ProcessMaker Teil Ihrer CI/CD-Pipelines sein. Wenn eine Umgebung bereitgestellt oder aktualisiert wird, kann die CI/CD-Pipeline einen REST-API-Aufruf gegen ProcessMaker ausführen, um mit der Ausführung einer Testsuite auf der Grundlage der Nutzlast der API-Anforderung zu beginnen.

Mit einem CI/CD-Prozess können Sie Probleme schneller lösen, weil Sie Fehler schneller identifizieren und beheben können. Auch die Testplanung und -durchführung wird konsequent beibehalten. Technische Kenntnisse sind nicht erforderlich. Die Bereitstellung erfolgt einfacher und schneller und fast ohne Ausfallzeiten. Es können qualitativ hochwertigere Anwendungen erstellt werden, da Sie mehr Zeit haben, sich auf Benutzerfreundlichkeit, Sicherheit, Erkundung und Leistungstests zu konzentrieren. Kontinuierliches Feedback verbessert auch die Gesamtqualität.

Ausführung von Teilprozessen

Ein einfacher Prozess kann so konzipiert sein, dass er einen einzelnen Selenium-Test ausführt und das Ergebnis zurückgibt. Eine Testsuite kann ein übergeordneter Prozess sein, der die Ausführung einer definierten Testsuite in einer Schleife durchläuft und auf der Grundlage der Ergebnisse komplexere Workflow-Entscheidungen durchführt.

Die ProcessMaker-Workflow-Engine ist in ihrem Kern hochgradig anpassbar. Sie können Tests mit vollständiger Transparenz verfolgen. Einige der Vorteile sind die folgenden:

  • Bessere Testeffizienz
  • Geringere Wartungskosten
  • Optimierte Testabdeckung
  • Wenige manuelle Eingriffe erforderlich
  • Wiederverwendbarkeit von Code
  • Erfahrung in der Testautomatisierung ist nicht erforderlich

Containerisiertes Selenium-basiertes Testen mit Skriptaufgaben

Skript-Tasks werden in Docker-Containern für den Lebenszyklus des Skripts ausgeführt. Wir können das Docker-Image von Selenium nutzen, um einen Test mit Sandbox-Isolierung auszuführen. Wir können das Docker-Image auch so anpassen, dass es vom Selenium-Basis-Image erbt und dann ein Gerüst bereitstellt, um den Test zu laden und auszuführen, das die Ergebnisse in einem geeigneten JSON-Format zurückgibt, das ProcessMaker erwartet.

Warum mag ProcessMaker JSON? Nun, zunächst einmal ist JSON lesbarer und kompakter als XML, was die Arbeit mit komplexen Systemen erleichtert. Da JSON weniger Daten als XML verwendet, ist das Parsen der Software viel schneller. JSON erleichtert auch die zeitliche Zuordnung zu Domänenobjekten. Die Map-Datenstruktur von JSON ist außerdem leicht zu verstehen. Außerdem gewährleistet JSON die Übereinstimmung von Objekten und Codes.

Skalierung

Die Ausführung von Testsuiten erfolgt nach Bedarf und kann als Einsatz in einer einzelnen Umgebung oder in großem Maßstab (Upgrades mehrerer Umgebungen) konfiguriert werden. Sie können die Ausführung von Testsuiten leicht skalieren, indem Sie die automatische Skalierungsinfrastruktur von ProcessMaker nutzen.

Speichern von Testsuiten als Code

Das Ziel ist es, die Definition einer Testsuite als JSON-Datei in einem GitHub-Code-Repository zu speichern. Die JSON-Datei definiert die auszuführenden Tests, wobei jeder Test auch im Code-Repository gespeichert wird. Diese Verwendung von Git-Code-Repositories zur Speicherung von Testsuiten ermöglicht es uns, Verzweigungen und andere Git-Eigenschaften zur Steuerung und Verwaltung von Testsuiten zu nutzen. Dies ermöglicht auch die lokale Ausführung dieser Tests ohne ProcessMaker zu Entwicklungs- und Debugging-Zwecken.

Warum verwenden wir also GitHub? Ehrlich gesagt, weil das Wiki und der Issue Tracker von GitHub uns das Feedback und die ausführliche Dokumentation liefern, die wir benötigen. Außerdem kann man Revisionen über mehrere Versionen hinweg verfolgen. Was die Versionskontrolle anbelangt, lieben wir außerdem die Verzweigungsfunktionen von Git. Durch die Verzweigungsfunktionen können Sie bei jeder Änderung, die Sie an Ihrer Codebasis vornehmen müssen, in einer isolierten Umgebung arbeiten. Da GitHub ein verteiltes Versionskontrollsystem verwendet, kann jede Person, die an demselben Projekt arbeitet, ihren gesamten Verlauf in ihrem eigenen lokalisierten Repository speichern. Und wenn zwei Personen Änderungen an derselben Datei vornehmen, werden diese von GitHub intelligent kombiniert. Es ist auch recht einfach, zu einer bestimmten Version zurückzukehren. Insgesamt ermöglicht es einen schnelleren Veröffentlichungszyklus und GitHub arbeitet nahtlos mit CI/CD-Umgebungen zusammen.

Schlussfolgerung

Bei der Auswahl eines automatisierten Testwerkzeugs sollten Sie nach einem Werkzeug Ausschau halten, das agil ist und eine breite Palette von Sprachen und Anwendungen unterstützt. So kann Ihr Team zu Ihren Testzyklen beitragen, ohne dass es technische Kenntnisse benötigt. 

 

PEX-Bericht: Die Macht der Prozessintelligenz
Demo anfordern

Demo anfordern

Erfahren Sie, wie führende Unternehmen ProcessMaker einsetzen, um ihre Abläufe durch Prozessautomatisierung zu rationalisieren.

Demo anfordern

Demo anfordern

Datenschutz-Update
Wir verwenden Cookies, um die Interaktion mit unserer Website und unseren Dienstleistungen einfach und sinnvoll zu gestalten. Cookies helfen uns, besser zu verstehen, wie unsere Website genutzt wird, und die Werbung entsprechend anzupassen.

Akzeptieren