Einführung in Leistungstests mit JMeter

1. Übersicht

In diesem Artikel verwenden wir Apache JMeter, um Leistungstests zu konfigurieren und auszuführen.

2. JMeter einrichten

Laden Sie JMeter herunter, entpacken Sie es, wechseln Sie in den Ordner bin und führen Sie die ausführbare Datei aus (* .bat für Windows und * .sh für Linux / Unix).

Als Nächstes müssen wir diesen Ordner nur zur Pfadumgebungsvariablen hinzufügen, damit über die Befehlszeile darauf zugegriffen werden kann.

Die zum Zeitpunkt des Schreibens stabilste Version ist die Version 3.3 - die neueste Version finden Sie hier.

3. Erstellen von JMeter-Skripten

Schreiben wir nun unser erstes JMeter-Skript (eine Datei mit einer technischen Beschreibung unserer Tests).

Diese API ist eine einfache SpringBoot-Anwendung, die eine REST-API verfügbar macht.

Lassen Sie uns den ersten Testplan aktualisieren und zuerst seinen Namen ändern und dann eine Thread-Gruppe hinzufügen .

Eine Thread-Gruppe ermöglicht es uns, den Benutzerfluss zu kennen und zu simulieren, wie sie mit der App interagieren. Klicken Sie mit der rechten Maustaste auf unseren Skriptnamen in der GUI und folgen Sie dem ausgewählten Menü:

Nun gehen wir zum Konfigurationsteil der Thread-Gruppe , wo wir die Anzahl der Benutzer angeben, die parallel Anforderungen an unsere Anwendung stellen:

Hier haben wir Parameter angegeben wie:

- Name: Der Name, den wir der Thread-Gruppe geben möchten

- Die Anzahl der Threads (Benutzer) : Die Anzahl der parallelen Benutzer

- Hochlaufzeit : Zeit, die benötigt wird, um von 0 auf die angegebene Anzahl von Benutzern zu gelangen

- Schleifenzahl : Anzahl der Wiederholungen

Fügen Sie eine HTTP-Anforderung hinzu, da diese von jeweils 5 Benutzern simuliert wird.

Füllen wir die Informationen aus, um unsere dort oben beschriebene API wie im folgenden Bild zu adressieren:

Wir geben nur die Adresse der Website, den Port und den spezifischen Pfad ein.

Als Nächstes simulieren wir die Benutzeranforderungen nach dem Hinzufügen eines Strukturbaums "Ergebnisse anzeigen" ( Ergebnisse in Tabelle anzeigen, wenn das Ergebnis eine Liste von Datensätzen ist), indem Sie dem Menü " Hinzufügen> Listener" folgen .

Klicken Sie oben auf den grünen Pfeil rechts, um den Test auszuführen und die Antwortdaten anzuzeigen:

Eine detailliertere Darstellung der Antwort finden Sie auf der Registerkarte Sampler-Ergebnis .

Lassen Sie uns abschließend der HTTP-Anforderung eine Duration Assertion hinzufügen , sodass jede Anforderung, die länger als zehn Millisekunden dauert, als fehlgeschlagener Test betrachtet wird:

Nach dem erneuten Ausführen des Tests stellen wir fest, dass es einige (hier 3) Benutzer gibt, die die Schülerlisten nicht in weniger als zehn Millisekunden abrufen können:

Speichern Sie nun den Test mit der Erweiterung .jmx im Ressourcenordner der API.

Weitere Elemente stehen zur Konfiguration unserer Testdatei zur Verfügung:

  • JDBC-Anforderung: Nützlich, um eine JDBC-Anforderung (SQL-Abfrage) an eine Datenbank zu senden. Bevor Sie sie verwenden, müssen Sie ein JDBC-Verbindungskonfigurationselement einrichten
  • XML-Zusicherung: Testet, ob die Antwortdaten aus einem ordnungsgemäß korrekten XML-Dokument stammen
  • Größenzusicherung: Bestätigt, dass die Antwort die richtige Anzahl von Bytes enthält
  • JMS Publisher: Zum Veröffentlichen von Nachrichten an ein bestimmtes Ziel (Thema / Warteschlange) gemäß der J2EE-Spezifikation für Messaging

Alle verfügbaren Komponenten sind in der Bedienungsanleitung aufgeführt.

4. Führen Sie die JMeter-Tests aus

Es gibt zwei Möglichkeiten, JMeter-Tests auszuführen. Eine besteht darin, das verfügbare Maven-Plugin zu verwenden, und die andere darin, die eigenständige JMeter-App im Nicht-GUI-Modus zu verwenden.

In jedem Fall müssen beide wissen, wo sie das zuvor konfigurierte JMeter-Skript erreichen können.

4.1. JMeter Maven Plugin

Das JMeter Maven Plugin ist ein Maven Plugin, mit dem JMeter-Tests als Teil unseres Builds ausgeführt werden können. Seine letzte Version ist derzeit 2.6.0, die mit Apache JMeter 3.3 kompatibel ist.

Fügen wir es der pom.xml unseres Projekts hinzu:

 com.lazerycode.jmeter jmeter-maven-plugin 2.6.0   jmeter-tests  jmeter     ${project.basedir}/src/main/resources ${project.basedir}/src/main/resources  

After this, we can run all our tests with mvn verify or just the JMeter ones with mvn jmeter:jmeter; here is the console output of the command:

Note: Here we specified the directory where our tests are located in the project, either the default one(${project.basedir}/src/test/jmeter) will be chosen; likewise is configured the result directory else the default one will be ${project.basedir}/target/jmeter/results.

The full plugin documentation is accessible here.

4.2. Non-GUI Mode

The other way to do it's via the JMeter executable, assuming that it's available via the command line we can do this:

jmeter -Jjmeter.save.saveservice.output_format=xml

-n -t src/main/resources/JMeter.jmx -l src/main/resources/JMeter.jtl

Wir legen XML als Ausgabeformat fest, das die genaue Testdatei und die Ergebnisdatei ausfüllt.

Hinweis: Es wird empfohlen, den GUI-Modus nicht für Lasttests zu verwenden, sondern nur für die Testerstellung und das Testdebugging.

5. Schlussfolgerung

In diesem kurzen Tutorial haben wir Apache JMeter in einer SpringBoot-App so eingerichtet, dass Leistungstests mit einem Maven-Plugin ausgeführt werden, während praktisch untersucht wird, wie ein grundlegender Leistungstest entworfen wird.

Wie immer finden Sie den Quellcode für diesen Artikel auf GitHub.