gatling tutorial getting started with gatling load testing
Dieses Gatling-Video-Tutorial bietet einen umfassenden Überblick über Gatling, einschließlich Funktionen, Installationsschritten und Beispiele für die Verwendung von Gatling Simulation Recorder:
Gatling ist ein Open-Source-Testframework, das auf Scala basiert. Mit mehr als 3 Millionen Downloads in den letzten 3 Jahren gewinnt es heutzutage an Popularität.
Es ist sowohl als Open-Source- als auch als Enterprise-Variante erhältlich Gatling Frontline mit mehr Integrationen und Unterstützung durch das Gatling-Team. Mit der kostenlosen und Open-Source-Community-Edition von Gatling können jedoch alle praktischen Anwendungsfälle bearbeitet werden.
Was du lernen wirst:
Gatling Video Tutorial
Sehen wir uns die Schritte an, die erforderlich sind, um mit Gatling zu beginnen. Im Rahmen dieses Tutorials werden wir auch einige wichtige Funktionen von Gatling behandeln.
Hier ist ein Video-Tutorial zur Einführung in Gatling:
Installation
Gatling kann auf zwei verschiedene Arten installiert werden. Dies kann wie folgt erklärt werden:
# 1) Mit Gatling als eigenständiges Tool können Sie das Installationsprogramm / die Anwendung einfach mit dem offiziellen Gatling installieren Webseite und befolgen Sie die Installationsanweisungen.
Bitte beachten Sie, dass der installierte Zip-Ordner sowohl Shell- als auch Batch-Dateien enthält, sodass Gatling für verschiedene Betriebssysteme wie Windows, MacOS, Linux / Unix usw. geeignet ist.
Das Installationsprogramm ist nichts anderes als ein Java-basierter Gatling-Skriptrekorder, der Benutzeraktionen über den Browser im Tool aufzeichnet und dann in ein Skript oder Szenario konvertiert werden kann, das geladen und getestet werden muss. Wir werden dies in den kommenden Abschnitten ausführlich sehen.
#zwei) Eine andere Möglichkeit, Gatling zu installieren / verwenden, besteht darin, es als Paket über Maven / Gradle oder über Scala-Build-Tools zu verwenden.
Ein wichtiger Punkt hierbei ist, dass Gatling-Skripte alle auf Scala basieren. Daher kann beim Erstellen eines Scala-basierten Projekts die Gatling-Bibliothek verwendet werden, die von beliebigen Build-Tools wie Maven / Gradle oder SBT importiert werden kann.
Eigenschaften von Gatling
Diese sind wie folgt:
# 1) Asynchrone Architektur und leichte Threads
Gatling verfügt über eine erweiterte Architektur, die auf dem Akka-Toolkit basiert und vollständig asynchron ist. Dies gibt ihm die Oberhand im Vergleich zu anderen Leistungstest-Tools wie JMeter, bei denen jeder Thread einem einzelnen Benutzer entspricht.
Hier kann ein einzelner Thread mehrere Benutzer simulieren, da er über das Actor-Modell eine Messaging-Architektur verfügt.
Kurz gesagt, ein Gatling-Test kann im Vergleich zu anderen Tools wie Jmeter eine Anzahl von gleichzeitigen Benutzern pro Maschine verarbeiten und führt somit zu einer erheblichen Einsparung von CPU und RAM.
Empfohlene Lektüre => Akteurmodell und asynchrone Architektur von Gatling
# 2) Domain Specific Language macht Tests lesbar
Gatling-Skripte sind in Scala geschrieben und verfügen über ein benutzerfreundliches DSL, wodurch die Skripte gut lesbar und weniger fehleranfällig sind. Weitere Informationen zu Gatling DSL finden Sie unter Hier .
# 3) Protokollunabhängige Unterstützung
Gatling unterstützt eine Vielzahl von Protokollen, einschließlich HTTP, HTTPS und Web Sockets. Es enthält auch Erweiterungen zum Testen von SQL-Abfragen / -Skripten.
# 4) Berichterstattung und Aussagen
Gatling bietet sofort Unterstützung für die Erstellung detaillierter HTML-Berichte für die ausgeführten Szenarien und verfügt auch über Funktionen zum Anwenden von Zusicherungen auf die einzelnen Anforderungen in Szenarien. Zum Beispiel, Antwortzeiten, Validierung von JSON-Inhalten usw.
# 5) Freundlicher GUI-basierter Testrekorder
Gatling wird mit einem benutzerfreundlichen grafischen Testrekorder geliefert, mit dem Simulationsskripte erstellt werden können, indem Benutzeraktivitäten oder Benutzeraktionen in einem Webbrowser aufgezeichnet werden. Die generierten Skripte sind Scala-basierte Skripte, die zu einem späteren Zeitpunkt ausgeführt werden können und gemäß den Anforderungen geändert werden können.
Testanwendung und Beispielskriptaufzeichnung
Für die Erstellung der Beispielsimulation verwenden wir Gatlings offiziell bereitgestellte gehostete Anwendung
Wir werden den Simulationsrekorder von Gatling verwenden, um mit dem Erstellen der Last und dem Durchführen von Leistungstests zu beginnen. Bevor wir fortfahren, wollen wir das Szenario diskutieren, in dem wir den Test laden möchten.
Das Szenario ist ein Anwendungsfall, bei dem wir versuchen, einen Test zu laden. Dies bedeutet im Wesentlichen, dass wir eine Benutzeraktion in ein Szenario oder eine Reihe von Schritten nachahmen möchten, die getestet werden müssen.
Zum Beispiel, Angenommen, ein Benutzer greift auf eine E-Commerce-Website wie Amazon.com zu, sucht nach einem Produkt, legt es in den Warenkorb und checkt schließlich mit den Zahlungsinformationen aus.
Diese gesamte Benutzeraktion ist ein einzelnes Szenario, das einzelne Schritte wie enthält
- Navigieren zur Website Amazon.com.
- Warten auf das Laden der Seite.
- Suchen nach einem Produkt über die Produktsuchleiste.
- Hinzufügen des Produkts zum Warenkorb.
- Zum Warenkorb gehen und mit dem Produkt auschecken.
- Zahlung leisten.
Um dieses vollständige Szenario aus System- oder Serverperspektive zu testen, müssen wir verstehen, dass es sich nur um eine Sammlung oder eine Reihe von API-Aufrufen handelt, die an den Back-End-Server gesendet werden, und genau das möchten wir im Leistungstest.
In diesem Beispiel verwenden wir das folgende Szenario für eine von Gatling gehostete Anwendung:
# 1) Navigieren Sie zu Von Gatling gehostete Anwendung .
#zwei) Klicken Sie auf 'Neuen Computer hinzufügen'.
#3) Wählen Sie in der Dropdown-Liste den Computernamen als Apple und den Firmennamen als 'Apple Inc' aus (siehe Abbildung unten).
# 4) Klicken Sie nach Eingabe der Details auf 'Diesen Computer erstellen'.
Richten Sie den Gatling-Rekorder ein und zeichnen Sie das erste Skript auf
In diesem Abschnitt wird erläutert, wie Sie den Gatling-Testrekorder einrichten, um eine Simulation für das im vorherigen Abschnitt beschriebene Szenario zu erstellen.
Wir werden den Gatling-Simulationsrekorder verwenden, der in einer sehr einfachen Form einen HTTP-Proxy darstellt. Sie müssen mit anderen HTTP-Aufzeichnungstools wie Fiddler oder Chrome-HTTP-Proxy usw. vertraut sein. Der Gatling-Rekorder ähnelt also zusätzlichen Funktionen zum Konvertieren des Aufnahme in ein Testsimulationsskript.
Lassen Sie uns zunächst sehen, wie Sie den Gatling-Rekorder einrichten:
# 1) Sobald der Gatling-Zip-Ordner installiert ist, entpacken Sie den Ordner einfach an den Speicherort, an dem der Gatling installiert werden soll.
Was ist der Unterschied zwischen Qualitätssicherung und Qualitätskontrolle?
#zwei) Nach diesem Schritt müssen wir 2 Umgebungsvariablen mit dem Namen - festlegen. GATLING_HOME (für Gatling-Ausgangsverzeichnis) und GATLING_CONF (für den Speicherort des Konfigurationsordners von Gatling).
Abhängig von der Art des Betriebssystems (d. H. Windows oder Mac oder Linux), Stellen Sie diese Umgebungsvariablen mit den folgenden Werten ein:
GATLING_HOME = {Gatling-Installationsverzeichnis}
Beispiel:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {Gatling-Installationsverzeichnis} / conf
Beispiel:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
Sobald die Variablen auf Validierung eingestellt sind, können Sie einfach auf dem Terminal den Befehl drücken - export | Griff 'GATLING' und die Ausgabe sollte die 2 Umgebungsvariablen zeigen, die wir gerade eingestellt haben.
#3) Sobald diese Umgebungsvariablen festgelegt sind, müssen wir unseren Gatling-Skriptrekorder starten. Für Windows-basierte Betriebssysteme wird eine Batch-Datei mit der Gatling-Installation bereitgestellt, und für Linux / MacOS-basierte Betriebssysteme wird eine Shell-Datei bereitgestellt.
Unten ist die Dateistruktur des bin-Ordners:
# 4) Abhängig vom Betriebssystemtyp können wir also den Dateityp auswählen, der für den laufenden Rekorder ausgeführt werden soll. Bitte beachten Sie, dass wir hier 2 Dateien verwenden werden:
- Gatling.sh / Gatling.bat Datei - um das Simulationsskript auszuführen.
- Datei Recorder.sh / recorder.bat - um den Gatling-Simulationsrekorder auszuführen / zu öffnen.
# 5) Führen Sie das Rekorderskript aus, um den Gatling-Rekorder zu öffnen. Verwenden Sie das Mac / Linux-Terminal, um das Shell-Skript auszuführen (oder führen Sie die Windows-Batchdatei direkt aus).
. /$GATLING_HOME/bin/recorder.sh
# 6) Wenn die Umgebungsvariablen richtig eingestellt sind, sollte der obige Befehl den Gatling-Skriptrekorder öffnen.
# 7) Beachten Sie den HTTP / https-Port im Rekorder (Standardauswahl ist 8000 oder 8080). Dies ist der Port, an dem der HTTP-Verkehrs-Proxy-Listener von Gatling konfiguriert ist. Wir können diese Portnummer nach Belieben ändern (oder mit den Standardwerten fortfahren).
qa Ingenieur Interview Fragen Antworten pdf
# 8) Konfigurieren wir nun den Chrome-Proxy so, dass er diesen Port abhört - d. H. Im Wesentlichen möchten wir unseren HTTP-Verkehr vom Browser über diesen Proxy-Listener oder -Recorder weiterleiten.
Folge dies Verknüpfung um einen Proxy auf Chrome für verschiedene Betriebssysteme einzurichten.
# 9) Sobald der Port konfiguriert ist, führen wir unser Szenario auf dem aus Von Gatling gehostete Anwendung.
# 10) Bevor die Ausführung des Szenarios beginnt, müssen wir zuerst den Paketnamen und den Klassennamen für das resultierende Testskript konfigurieren und dann den Proxy-Listener starten, indem wir einfach auf die Schaltfläche „Start“ im Skriptrekorder klicken.
#elf) Sobald der Proxy-Rekorder gestartet wird, wird ein neues Fenster angezeigt, in dem im Wesentlichen alle Anforderungen erfasst werden, die ausgelöst werden, wenn das Szenario im Browser ausgeführt wird.
# 12) Navigieren Sie zu Von Gatling gehostete Anwendung im Browser.
Wenn Sie sehen, dass die Anforderung im Rekorderfenster aufgezeichnet wurde, bedeutet dies, dass das Proxy-Setup für den Browser korrekt ist und der Gatling-Rekorder nun die Anforderungen gemäß dem ausgeführten Testszenario aufzeichnen kann (wenn nicht, gehen Sie zurück zu Schritt #) 7, um die Proxy-Konfiguration für Browser / System zu korrigieren).
# 13) Wenn wir sicher sind, dass das Setup einwandfrei funktioniert, klicken Sie auf 'Löschen', um alles vom Rekorder zu entfernen und Beginnen Sie mit der Ausführung des Szenarios wie folgt:
- Navigieren Sie zu Von Gatling gehostete Anwendung
- Klicken Sie auf die Schaltfläche 'Neuen Computer hinzufügen'. Stellen Sie sicher, dass Sie auf einem neuen Computerformular mit der Browser-URL als landen http://computer-database.gatling.io/computers/new
- Füllen Sie nun die Werte im Formular mit - Computername als Apple und Firma als 'Apple Inc.' aus der Dropdown-Liste aus.
- Klicken Sie auf 'Diesen Computer erstellen' und Sie werden zu weitergeleitet Startseite
- Dies ist das gesamte Szenario, das wir mit dem Gatling-Skriptrekorder ausführen und ein Automatisierungsskript erstellen möchten. Sobald die obigen Schritte ausgeführt wurden, sollte der Rekorder alle getätigten HTTP-Aufrufe erfassen und wie folgt aussehen.
- Bitte beachten Sie, dass das aufgezeichnete Skript auch einige 'PAUSE' -Befehle enthält. Dies ist nichts anderes als die 'Denkzeit', die der Rekorder erfasst, um Benutzeraktionen nachzuahmen - d. H. Die Zeit, die zwischen Anforderungen benötigt wird. Diese Werte können konfiguriert / geändert werden, sobald das Skript ausgeführt wird, abhängig von den tatsächlichen Anforderungen.
# 14) Um die Skripterstellung abzuschließen, klicken Sie im Rekorderfenster auf „Stop & Save“.
#fünfzehn) Das Simulationsskript sollte in dem Verzeichnis oder Simulationsordner erstellt werden, das auf dem Konfigurationsbildschirm des Gatling-Rekorders angezeigt wird.
Das Simulationsskript verstehen
Navigieren Sie nach dem Erstellen des Skripts für das ausgeführte Szenario zum Simulationsordner und öffnen Sie das Skript.
Bitte beachten Sie, dass das Skript als dieselbe Paketstruktur erstellt wird, die vor dem Starten des Rekorders angegeben wurde - in unserem Fall ist dies der Fall com.learn.gatling und der Klassenname wird sein 'Produkt hinzufügen'.
Öffnen Sie die Datei AddProduct.scala und versuchen Sie, die verschiedenen Abschnitte des Skripts durchzugehen.
Dies kann wie folgt erklärt werden:
# 1) Setup-Konfiguration ::d.h. httpProtocol und Header - In diesem Abschnitt wird die Gesamtkonfiguration der Daten für das Skript durchgeführt, z. B.:
- Protokolltyp - HTTP oder https,
- Andere Dinge wie baseUrl, die in nachfolgenden Anforderungen verwendet werden sollen.
- Header-Informationen - Allgemeine Header-Informationen sowie die Header, die mit einzelnen Anforderungen gesendet werden sollen. Siehe header_0 und headers_2 im folgenden Codefragment:
val httpProtocol = http .baseUrl('http://computer-database.gatling.io') .inferHtmlResources(BlackList('''.*.js''', '''.*.css''', '''.*.gif''', '''.*.jpeg''', '''.*.jpg''', '''.*.ico''', '''.*.woff''', '''.*.woff2''', '''.*.(t|o)tf''', '''.*.png''', '''.*detectportal.firefox.com.*'''), WhiteList()) .acceptHeader ('text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, application/signed-exchange;v=b3') .acceptEncodingHeader('gzip, deflate') .acceptLanguageHeader('en-GB,en-US;q=0.9,en;q=0.8') .upgradeInsecureRequestsHeader('1') .userAgentHeader('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36') val headers_0 = Map('Proxy-Connection' -> 'keep-alive') val headers_2 = Map( 'Origin' -> 'http://computer-database.gatling.io', 'Proxy-Connection' -> 'keep-alive')
# 2) Szenariodefinition: Dies enthält das tatsächliche Szenario und die Reihenfolge der Anforderungen, die ausgeführt werden müssen, um das im Browserfenster ausgeführte Szenario neu zu erstellen.
Ein wichtiger Punkt, den Sie hier beachten sollten, ist, dass wir hier nur die relativen URLs für die Anforderungen anstelle der vollständigen URL erwähnt haben. Dies liegt daran, dass wir verwenden werden httpProtocol-Konfiguration Wir haben in Punkt 1 diskutiert, wo die Szenariokonfigurationsdaten definiert sind.
val scn = scenario('AddProduct') .exec(http('request_0') .get('/computers') .headers(headers_0) .resources(http('request_1') .get('/computers/new') .headers(headers_0))) .pause(4) .exec(http('request_2') .post('/computers') .headers(headers_2) .formParam('name', 'apple') .formParam('introduced', '') .formParam('discontinued', '') .formParam('company', '1'))
# 3) Szenarioausführung: Dieser Abschnitt ist der wichtigste Abschnitt, der die Schritte zum Einrichten des Szenarios enthält.
Die Inject-Konfiguration ist hier die Anzahl der Benutzer / Threads oder mit anderen Worten die Last, mit der wir dieses Szenario testen möchten.
Der Standardwert für eine Anzahl von Benutzern ist immer 1 und kann geändert werden, bevor das Szenario ausgeführt wird.
Beachten Sie außerdem, dass wir auch die in Punkt 1 beschriebene httpProtocol-Definition verwenden, die alle Grundkonfigurationen für das auszuführende Szenario enthält.
setUp (scn.inject (atOnceUsers (1))). protocol (httpProtocol)
Weitere Informationen zur Inject- und Load-Konfiguration finden Sie im nächsten Tutorial.
Test mit Simulationsskript ausführen
Nun werden wir sehen, wie das Szenario mit diesem Simulationsskript ausgeführt wird, das mit dem Rekorder erstellt wurde. Das resultierende Skript, das erstellt wird, ist eine Scala-basierte Klasse, die Details zu dem Szenario enthält, das über den Browser ausgeführt wurde.
Hier ist ein Video-Tutorial für die Ausführung von Gatling-Skripten:
Die Gatling-Installation enthält ein Shell-Skript (für Windows-Benutzer ist es ein Batch-Skript), mit dem diese Simulation ausgeführt werden kann.
Führen Sie die folgenden Schritte aus, um die erstellte Simulation auszuführen:
# 1) Navigieren Sie zum Ordner bin der Gatling-Installation oder gehen Sie einfach zu - $ GATLING_HOME / bin
#zwei) Führen Sie die Datei Gatling.sh für Linux / Mac OS (oder die Datei Gatling.bat für Windows-Benutzer) aus.
#3) Wenn mehrere Skriptdateien im Simulationsordner vorhanden sind, fordert das Skript den Benutzer auf, die Simulation auszuwählen, die der Benutzer ausführen möchte. (Um dies zu simulieren, erstellen Sie dasselbe Szenario in verschiedenen Paketen. Wenn das Gatling-Skript ausgeführt wird, können Sie dies tun sehen, dass es 2 verschiedene Skripte anzeigt).
# 4) Die Simulation ist ausgewählt (oder sie ist standardmäßig auf die im Ordner vorhandene Simulation eingestellt, wenn nur ein Simulationsskript verfügbar ist).
# 5) Das Skript fordert nun auf, eine optionale Laufbeschreibung hinzuzufügen. Sie können dies einfach ignorieren und die Eingabetaste drücken, um die Simulationsausführung zu starten.
# 6) Während die Simulation ausgeführt wird, können Sie sehen, wie Ausführungsberichte auf dem Terminal gedruckt werden, und die Parameter wie Antwortzeit, Gesamtanforderungen, Erfolg / Fehler usw. Die zusammengefasste Ansicht wird angezeigt, sobald die Ausführung des Szenarios abgeschlossen ist.
# 7) Gatling generiert außerdem am Ende des Abschlusses der Szenarioausführung einen detaillierten HTML-basierten Bericht, der viele verschiedene Datenpunkte in Bezug auf das ausgeführte Szenario enthält.
Wir werden uns im nächsten Tutorial mit den Details des generierten Berichts befassen.
Vorteile der Verwendung von Gatling
Gatling bietet viele funktionsreiche Funktionen, um eine Testsuite für eine gute Leistungsautomatisierung zu erstellen, die das breite DSL von Gatling nutzt, sowie die wachsende Unterstützung der Community für Unterstützung und Beantwortung von Fragen.
Hierbei ist zu beachten, dass Gatling im Gegensatz zu anderen Tools wie JMeter eine steile Lernkurve aufweist. Stattdessen bietet es viele Programmierfunktionen, um einen robusten und voll funktionsfähigen Satz von Simulationsskripten für Leistungs- und Lasttests zu erstellen.
Einige dieser Vorteile sind wie folgt:
- Es ist leicht und ermöglicht die Verwendung eines einzelnen Threads für mehr als eine Anforderung, im Gegensatz zu den meisten anderen Perf-Tools, bei denen ein Thread einem Benutzer gleichgesetzt wird.
- Durch die Verwendung eines einzelnen Threads für mehrere Anforderungen kann Gatling mehr skalieren und selbst auf einem einzelnen Computer eine höhere Last generieren.
- Gatling bietet die Möglichkeit, im verteilten Modus ausgeführt zu werden, wenn eine große Last simuliert werden muss.
- Bietet Unterstützung für viele andere Protokolle als HTTP.zum Beispiel, Websockets, MQTT, JDBC usw. können mit Gatling auf Leistung getestet werden.
- Gatling bietet eine funktionsreiche DSL - Domain Specific Language, die eine einfache Syntax aufweist und leistungsstarke Funktionen bietet, wenn sie zum Erstellen eines Simulationsskripts kombiniert werden.
- Es bietet auch viele komplexe Simulationssteuerungsfunktionen wie Schleifenkonstrukte, Simulieren der Denkzeit, Drosseln von Anforderungen über den gewünschten RPS hinaus usw.
- Es verfügt über umfangreiche Berichtsfunktionen und kann je nach den Anforderungen angepasst werden.
Fazit
In diesem Tutorial haben wir die Grundlagen der Verwendung von Gatling als Lasttestwerkzeug der Wahl angesprochen. Mit dem ausdrucksstarken DSL und der hervorragenden Unterstützung des HTTP-Protokolls gewinnt Gatling schnell an Popularität und wird für viele als Werkzeug der Wahl verwendet.
Wir haben auch den Gatling-Rekorder und den Gatling-Skript-Runner anhand eines Beispielsimulationsskripts kennengelernt, mit dessen Hilfe das Grundkonzept der Aufzeichnung eines Simulationsskripts verstanden wurde, das in Zukunft mit dem Gatling-Skript-Executor ausgeführt werden könnte.
Im nächsten Tutorial werden wir das Schreiben von Gatling-Skripten als Scala-Projekte behandeln - d. H. Ohne den Rekorder zu verwenden und die Berichtsvorlagen zu verstehen, die generiert werden, wenn der Gatling die Simulationsausführung abschließt.
Literatur-Empfehlungen
- Lasttests mit HP LoadRunner-Tutorials
- Korrelation - Lasttest mit LoadRunner
- Soak Testing Tutorial - Was ist Soak Testing?
- Lasttests mit LoadUI - Ein kostenloses und Open Source-Lasttest-Tool
- WebLOAD Review - Erste Schritte mit dem WebLOAD Load Testing Tool
- Tutorial für zerstörende Tests und zerstörungsfreie Tests
- Tutorial zum Testen der Benutzerfreundlichkeit: Eine vollständige Anleitung für die ersten Schritte
- Leistungstests vs Lasttests vs Stresstests (Unterschied)