Einführung in Gatling

Einführung in Gatling

1. Überblick

Gatling ist einload testing tool, das dasHTTP-Protokoll hervorragend unterstützt. Dies macht es zu einer wirklich guten Wahl für Lasttests auf jedemHTTP-Server.

Diese Kurzanleitung zeigt Ihnen, wie Siesetup a simple scenario zum Testen der Last einesHTTP-Servers verwenden.

Gatlingsimulation scripts are written in Scala, aber keine Sorge - das Tool hilft uns mit einer grafischen Benutzeroberfläche, mit der wir das Szenario aufzeichnen können. Sobald wir das Szenario aufgezeichnet haben, erstellt die GUI dasScala-Skript, das die Simulation darstellt.

Nach dem Ausführen der Simulation haben wir ein sofort präsentierbaresHTML reports.

Last but not least die Gatling-Architekturis asynchronous. Diese Art von Architektur ermöglicht es uns, virtuelle Benutzer als Nachrichten anstatt als dedizierte Threads zu implementieren, was sie sehr ressourcenschonend macht. Daher ist es kein Problem, Tausende virtueller Benutzer gleichzeitig auszuführen.

Es ist jedoch auch erwähnenswert, dass die Kern-Engine tatsächlichprotocol agnostic ist, sodass es durchaus möglich ist, Unterstützung für andere Protokolle zu implementieren. Beispielsweise liefert Gatling derzeit auchJMS-Unterstützung aus.

2. Erstellen eines Projekts mit dem Archetyp

Although we can get Gatling bundles as a .zip we choose to use Gatling’s Maven Archetype. This allows us to integrate Gatling and run it into an IDE and make it easy to maintain the project in a version control system. Be careful as Gatling require a JDK8.

Geben Sie in der Befehlszeile Folgendes ein:

mvn archetype:generate

Dann, wenn Sie dazu aufgefordert werden:

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):

Art:

gatling

Sie sollten dann sehen:

Choose archetype:
1: remote ->
  io.gatling.highcharts:gatling-highcharts-maven-archetype (gatling-highcharts-maven-archetype)

Geben Sie: ein

1

Um den Archetyp auszuwählen, wählen Sie die zu verwendende Version (wählen Sie die neueste Version).

Wählen Sie den NamengroupId,artifactId,version undpackage für die Klassen aus, bevor Sie die Erstellung des Archetyps bestätigen.

Zum Abschluss importieren Sie den Archetyp in eine IDE - zum Beispiel inScala IDE (basierend auf Eclipse) oder inIntelliJ IDEA.

3. Definieren Sie ein Szenario

Vor dem Starten des Rekorders müssen wirdefine a scenario eingeben. Es wird eine Darstellung dessen sein, was wirklich passiert, wenn Benutzer in einer Webanwendung navigieren.

In diesem Tutorial verwenden wir die vom Gatling-Team bereitgestellte Anwendung zu Beispielzwecken, die unter der URLhttp://computer-database.gatling.io gehostet wird.

Unser einfaches Szenario könnte sein:

  • Ein Benutzer kommt bei der Anwendung an.

  • Der Benutzer sucht nach "amstrad".

  • Der Benutzer öffnet eines der zugehörigen Modelle.

  • Der Benutzer kehrt zur Startseite zurück.

  • Der Benutzer durchläuft die Seiten.

4. Rekorder konfigurieren

Starten Sie zunächst die KlasseRecorderüber die IDE. Nach dem Start können Sie über die GUI konfigurieren, wie Anforderungen und Antworten aufgezeichnet werden. Wählen Sie die folgenden Optionen:

  • 8000 als Abhörport

  • org.example.simulation Paket

  • Klassenname vonRecordedSimulation

  • Follow Redirects? überprüft

  • Automatic Referers? überprüft

  • Black list first Filterstrategie ausgewählt

  • .\.css,.\.js und.*\.ico in den Blacklist-Filtern

setting

 

Jetzt müssen wir unseren Browser so konfigurieren, dass er den während der Konfiguration ausgewählten definierten Port (8000) verwendet. Dies ist der Port, mit dem unser Browser eine Verbindung herstellen muss, damitRecorder unsere Navigation erfassen kann.

Gehen Sie wie folgt vor, um mit Firefox zu arbeiten, öffnen Sie die erweiterten Einstellungen des Browsers, wechseln Sie zum Netzwerkfenster und aktualisieren Sie die Verbindungseinstellungen:

 

proxy settings

5. Aufzeichnen des Szenarios

Nachdem alles konfiguriert ist, können wir das oben definierte Szenario aufzeichnen. Der Schritt sind die folgenden:

  1. Starten Sie die Aufnahme, indem Sie auf die Schaltfläche 'Start' klicken

  2. Gehen Sie zur Website:http://computer-database.gatling.io

  3. Suchen Sie nach Modellen, deren Name "amstrad" enthält

  4. Wählen Sie "Amstrad CPC 6128".

  5. Gehen Sie zurück zur Homepage

  6. Durchläuft die Modellseiten mehrmals, indem Sie auf die SchaltflächeNext klicken

  7. Klicken Sie auf die Schaltfläche "Stop & Save"

Die Simulation wird in dem Paketorg.example generiert, das während der Konfiguration unter dem NamenRecordedSimulation.scala definiert wurde

6. Führen Sie eine Simulation mit Maven aus

Um unsere aufgezeichnete Simulation auszuführen, müssen wir unserepom.xml aktualisieren:


    io.gatling
    gatling-maven-plugin
    2.2.4
    
        
            test
            execute
            
                true
            
        
    

Damit können wir die Simulation in der Testphase durchführen. Um den Test zu starten, führen Sie einfach Folgendes aus:

mvn test

Nach Abschluss der Simulation zeigt die Konsole den Pfad zu den HTML-Berichten an.

Hinweis: Konfiguration<disableCompiler>true</disableCompiler> wird verwendet, da wir Scala mit maven verwenden. Dieses Flag stellt sicher, dass wir unsere Simulation nicht zweimal kompilieren. Weitere Details finden Sie unterGatling docs.

7. Überprüfen des Ergebnisses

Wenn wir dieindex.html am vorgeschlagenen Speicherort öffnen, sehen die Berichte wie folgt aus:

reports

8. Fazit

[.iframe-fluid] ##

In diesem Tutorial testetwe have exploredeinen HTTP-Server mit Gatling. Mit den Tools können wir eine Simulation basierend auf einem definierten Szenariowith the help einer GUI-Schnittstelle aufzeichnen. Nachdem die Aufnahme fertig ist, können wir unseren Test starten. Der Testbericht wird in Form eines HTML-Lebenslaufs vorliegen.

Um unser Beispiel aufzubauen, haben wir uns für die Verwendung eines Maven-Archetyps entschieden. Dies hilft unsto integrate Gatling and run it into an IDE and make it easy to maintain the project in a version control system.

Der Beispielcode befindet sich inGitHub project.