Portfolio |

Lasttests mit Gatling

Wir stellen das Open Source-Tool Gatling detailliert vor und gehen auf dessen Funktionalitäten, Komponenten und Lizenzmodelle ein.

Was ist Gatling?

Was kann man damit machen? Was muss ich wissen? Was kann es und was kann es nicht? Gatling ist ein Lasttesttool, welches auf einer nichtblockierenden, event-getriebenen und asynchronen Lastgenerierung basiert. Das heißt, die einzelnen Requests werden unabhängig voneinander versendet und von einem Timer getriggert, wodurch Gatling deutlich ressourcenschonender arbeitet –  anders etwa als Thread-basierte Tools wie Apache JMeter oder Micro Focus LoadRunner. Die Seiten-Skripte, die Szenarien und die Lastprofile werden in Scala-Code geschrieben, womit jedoch fundierte Programmierkenntnisse in erforderlich sind.

Threadbasierte Lasttesttools hingegen versenden mit Hilfe von virtuellen Usern Requests, die durch mehrere Threads ausgeführt werden. Hierbei gibt es zwei bedeutsame Nachteile:

  • Falls sich virtuelle User einen Thread teilen, muss der eine auf den anderen User warten, bis er fertig ist.
  • Ein versendeter Request wartet so lange, bis er eine Antwort vom Zielsystem erhalten hat, erst dann wird ein neuer Request gesendet. Das heißt, falls das System unter erhöhter Last langsamer antwortet, sinkt die effektive Last und die Rückkopplung des zu testenden Systems.

Welche Komponenten oder Packages benötigt man?

Das Gatling-Installationspaket kann ganz einfach unter folgenden Link heruntergeladen werden: https://gatling.io/open-source/start-testing/. Es gibt zwei verschiedene Installationsmöglichkeiten:

  • OpenSource
  • Enterprise

Im OpenSource-Installationsorder befinden sich für Windows-User unter dem „bin“-Ordner zwei Batch-Dateien. Der Gatling Recorder wird über die „recorder.bat“ und die Skriptausführung über die „gatling.bat“-Datei gestartet. Für Mac-User gibt es äquivalent zwei Shell-Dateien („gatling.sh“ und „recorder.sh“).

Der Gatling-Recorder
Ähnlich wie in Micro Focus LoadRunner und JMeter gibt es zur Aufzeichnung von Skripten mit Gatling einen Recorder. Der Recorder ist eine grafische Standalone-Applikation:

Abbildung1: Gatling Recorder

Für die Aufzeichnung der Skripte stehen zwei unterschiedliche Modi zur Verfügung:

  • Proxy (via HTTP-Proxy-Browsereinstellungen)
  • HAR (via Browserexport)

Nach erfolgreicher Aufzeichnung beziehungsweise Recording des Skriptes, wird ein Scala-Skript erstellt, wie im nächsten Punkt zu sehen ist.

Simulation – Seitenskripte, Szenarien und Lastprofile
Die Simulation beinhaltet neben den Skripten auch die Lastszenarien und -profile sowie die Protokolleinstellungen. Sie bildet das Fundament für den gesamten Testablauf. In der unteren Abbildung ist ein einfaches Scala-Skript zu sehen:

Abbildung 2: Simples Scala Skript

Zuerst wird das HTTP-Protokoll konfiguriert. In dem Protokoll werden unter anderem die Basis-URL des Testsystems, auf der alle weiteren Requests aufbauen, die Verbindungsheader und -parameter und die Angabe eines „Agents“ definiert. Das bedeutet, von welchem Browser sich Gatling zum Server verbindet.

Ein Szenario wird über die Funktion „scenario()“ definiert und besteht aus einem oder mehreren HTTP-Requests. Seiten-Skripte können mit zwei verschiedenen Funktionen beginnen:

  • exec(): ein einzelner Request wird gesendet mit Angabe der relativen URL zum Zielsystem beziehungsweise zur Zielapplikation
  • group()-Funktion: gruppiert mehrere Requests, so dass zum Beispiel eine Gesamttransaktion gebildet werden kann

Gatling-Skripte können, genau wie LoadRunner und JMeter, mittels verschiedener zusätzlicher Optionen erweitert werden:

  • Dynamisierung mit Hilfe regulärer Ausdrücke
  • Einbindung von Parametern
  • Assertions & Checks
  • Verwendung von Feeder (Einbindung externer Daten)

Die setUp-Methode der Simulation definiert das Lasttestprofil und verwendet die zuvor definierte Protokollkonfiguration. Im Lastprofil wird definiert, mit welcher Rate – beziehungsweise mit wie vielen Benutzern – in einem bestimmten zeitlichen Verlauf ein Szenario durchlaufen wird. Mittels der atOnceUsers()-Funktion wird eine bestimmte Anzahl an Benutzern gleichzeitig erzeugt. Weitere Informationen sind unter dem folgenden Link zu finden: https://gatling.io/docs/current/cheat-sheet/

Skriptausführung
Um das Skript, beziehungsweise den Tes, durchzuführen, wird die „gatling.bat“ gestartet. Es werden alle Scala-Simulationen aus dem Ordner „\user-files\simulations\“ aufgelistet. Als nächstes wird die Simulation „WebTours“ ausgewählt. Gatling fordert in der Konsole auf, eine optionale Testbeschreibung anzugeben:

Abbildung 3: Start einer Testdurchführung

Anschließend wird die Testdurchführung gestartet. Das im Skript definierte Szenario wird ausgeführt. Alle fünf Sekunden wird die Konsole mit Daten aktualisiert.

Abbildung 4: Skriptausführung

Nach der Testausführung wird automatisch ein HTML-Report erstellt und gespeichert.

Auswertung
In Gatling können nur HTML-Reports generiert werden. Der Gatling-Report wird im Ordner „results“ abgelegt. Er ist sehr übersichtlich, bietet eine globale Übersicht und eine Detailübersicht über die Metriken und Requests:

Abbildung 5: Gatling HTML-Report

Gatling in Verbindung mit LoadRunner Enterprise 2021
Seit LoadRunner Enterprise (LRE) 2021 ist die Gatling-Installation im Package enthalten. Es ist möglich, Gatling-Skripte hochzuladen, zu bearbeiten und auszuführen. Das Szenario, die Runtime Settings und die virtuellen User werden über LRE 2021 konfiguriert und erstellt. Im Anschluss kann der Testlauf in LRE ausgewertet werden.

Abbildung 6: Gatling-Skript in Micro Focus LoadRunner Enterprise 2021

Lizenzmodelle

Es gibt zwei verschiedene Lizenztypen in Gatling:

Das Enterprise-Modell „Gatling FrontLine“ bietet einige Vorteile im Vergleich zur OpenSource-Lösung:

  • Management-Interface für erweiterte Metriken und Funktionen
  • Unterstützung bei elastischen Cloud-Lastgeneratoren (AWS, OpenShift/Kubernetes, Azure etc.)
  • Erweitertes Reporting
  • CI-/CD-Unterstützung
  • Public API und Grafana Datasource

Sie haben Fragen zu Gatling, zur Einbindung in LoadRunner Enterprise oder zu Last- und Performancetests allgemein? Sprechen Sie uns an.