HTTP-Proxyserver in JMeter: Beispielskript aufzeichnen

⚡ Intelligente Zusammenfassung

JMeter Der HTTP-Proxy-Server zeichnet die Browseraktivitäten in einem wiederverwendbaren Testskript auf. Der Recorder befindet sich zwischen Browser und Website, erfasst jede Anfrage in einem Aufzeichnungscontroller, und der gespeicherte Ablauf wird von mehreren virtuellen Benutzern wiedergegeben.

  • 🎬 Hauptzweck: Der Proxy überwacht und protokolliert die Benutzeraktivitäten, während ein normaler Browser die zu testende Anwendung navigiert.
  • 🧱 Grundriss: Thread-Gruppe, HTTP-Anforderungsvorgaben und Aufzeichnungscontroller werden vor Beginn der Aufzeichnung erstellt.
  • 🎯 Target Regler: Diese Einstellung legt fest, wo erfasste Sampler innerhalb des Testplanbaums geschrieben werden.
  • 🌐 Browser-Einrichtung: Der Browser muss seinen HTTP-Proxy auf den folgenden Server verweisen: JMeter Standardmäßig Port 8888.
  • 🔐 HTTPS-Aufzeichnung: Apache importierenJMeterTemporaryRootCA.crt als vertrauenswürdige Zertifizierungsstelle festlegen und anschließend entfernen.
  • 🧹 Bereinigen Sie das Skript: Werbe- und Analyseanfragen werden ebenfalls protokolliert und sollten ausgeschlossen oder gelöscht werden.
  • 🔗 Vor der Skalierung korrelieren: Ersetzen Sie aufgezeichnete Sitzungstoken durch extracted Variablen, oder die Wiedergabe schlägt fehl.
  • ⚠️ Versionshinweis: Die Werkbank wurde entfernt in JMeter 5.0; das Element ist jetzt der HTTP(S) Test Script Recorder.

JMeter HTTP-Proxy-Server-Eintragsskript

Herausforderungen in der JMeter HTTP-Proxy-Server?

Das JMeter Der HTTP-Proxy-Server ist ein integrierter Recorder, der zwischen Browser und der zu testenden Website positioniert ist. Er überwacht und protokolliert die Benutzeraktivitäten während des normalen Betriebs der Anwendung und wandelt jede erfasste Anfrage in einen HTTP-Request-Sampler innerhalb des Testplans um. JMeter 3.0 Das Element wurde benannt HTTP(S)-Testskript-RecorderBeide Namen beschreiben dieselbe Komponente.

Rekord testing Es hilft Testern, Aktivitäten auf einem Testsystem aufzuzeichnen und wiederzugeben. Es handelt sich um eine Art automatisiertes Testen, jedoch für mehrere Benutzer gleichzeitig.

Warum aufnehmen, anstatt das Skript von Hand zu erstellen?

Eine realistische Nutzerreise auf einer modernen Website erzeugt Dutzende von Anfragen, jede mit eigenen Headern, Cookies und Formularparametern.ping Das manuelle Einlesen all dieser Daten in Sampler ist langsam und fehleranfällig. Die Aufzeichnung erfasst den exakten Datenverkehr, den der Browser gesendet hat, was drei Vorteile bietet:

  • Genauigkeit: Header-Reihenfolge, Cookies und versteckte Formularfelder werden genau so erfasst, wie sie vom Server empfangen wurden.
  • Geschwindigkeit: Eine zehnseitige Reisebeschreibung lässt sich in wenigen Minuten aufzeichnen und stundenlang von Hand schreiben.
  • Reichweite: Im Hintergrund stattfindende AJAX-Aufrufe, die in der Benutzeroberfläche nicht sichtbar sind, werden dennoch in der Aufzeichnung angezeigt.

Die Aufnahme ist eher ein Ausgangspunkt als ein abgeschlossener Test. Sie muss noch bereinigt, korreliert und parametrisiert werden, bevor sie verwendbar ist. LastprüfungDie folgenden Abschnitte beschreiben den gesamten Pfad von einem leeren JMeter Fenster zu einem Skript, das zuverlässig wiedergegeben wird.

Hier ist die Fahrplan dieses Praxisbeispiels

HTTP-Proxyserver in JMeter

Wie man ein Skript aufnimmt in JMeter 5.x

Die aktuelle Version ist Apache JMeter 5.6.3, veröffentlicht am 9. Januar 2024, und erfordert Java 8 oder später, mit Java 17 empfohlen. Wer der bebilderten Anleitung weiter unten auf dieser Seite zu dieser Version folgt, findet keinen Workbench-Knoten mehr, da dieser in Version 5.0 entfernt wurde. Die Funktionalität ist nicht verschwunden, sondern wurde lediglich verschoben. Der Recorder wird nun direkt dem Testplan hinzugefügt und heißt HTTP(S)-Testskript-Recorder.

Der schnellste Weg führt über die mitgelieferte Vorlage. Wählen Sie Reichen Sie das > Template > Aufnahme und JMeter Es wird ein vollständiger Plan generiert, der eine Thread-Gruppe, HTTP-Anforderungsvorgaben, einen Aufzeichnungscontroller und den Rekorder selbst enthält, die bereits miteinander verbunden sind. Der manuelle Aufbau derselben Struktur erfordert die folgenden Schritte.

  1. Erstellen Sie das Grundgerüst des Plans. Füge eine Thread-Gruppe hinzu und anschließend einen Aufnahmecontroller darunter. Hier werden die aufgenommenen Samples gespeichert.
  2. Fügen Sie den Rekorder zum Testplan hinzu. Klicken Sie mit der rechten Maustaste auf den Testplan-Knoten und wählen Sie Speichern > Nicht-Testelemente > HTTP(S)-Testskript-RecorderEs ist ein Geschwisterelement der Thread-Gruppe, kein Kindelement.
  3. Stellen Sie den Port ein. Standardmäßig wird Port 8888 verwendet. Jeder freie Port funktioniert, vorausgesetzt, der Browser ist entsprechend konfiguriert.
  4. Wähle die Target Controller. Wählen Sie den im ersten Schritt erstellten Aufzeichnungscontroller aus, damit die Anfragen dort gruppiert werden, wo Sie es erwarten, und nicht im Plan-Root verstreut sind.
  5. Speichern URL Ausschlussmuster. Auf der Registerkarte „Anforderungsfilterung“ können Sie statische Ressourcen mit einem Muster wie beispielsweise „ .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Dadurch entfällt der größte Teil der später beschriebenen manuellen Aufräumarbeiten.
  6. Starten Sie das Aufnahmegerät. Klicken Sie auf Start oben auf dem Bedienfeld des Rekorders. JMeter schreibt ApacheJMeterTemporaryRootCA.crt wird jetzt in seinen Bin-Ordner verschoben, wodurch die HTTPS-Aufzeichnung möglich wird.
  7. Richten Sie den Browser auf den Proxy aus. Verwenden Sie localhost und den gewählten Port und navigieren Sie dann wie gewohnt durch die Anwendung.
  8. Anhalten und aufräumen. Drücken Sie auf Stopp, löschen Sie alle verbleibenden Anrufe von Drittanbietern und speichern Sie den Tarif.
  9. Vor der Skalierung validieren. Klicken Sie mit der rechten Maustaste auf die Threadgruppe und wählen Sie BestätigenDadurch wird der Plan einmal mit einem einzigen Thread ausgeführt, sodass Fehler auftreten, bevor eine Last aufgebracht wird.

Eine weitere Gewohnheit unterscheidet ein funktionierendes Skript von einem zuverlässigen. Verwenden Sie die grafische Oberfläche nur zum Erstellen und Debuggen und führen Sie den eigentlichen Test über die Kommandozeile aus. jmeter -n -t plan.jmx -l results.jtl -e -o report, wodurch auch ein HTML-Dashboard generiert wird. Derselbe Befehl bildet die Grundlage für Verteiltes Testen über mehrere Lastgeneratoren hinweg. Die Installation wird im Abschnitt beschrieben. JMeter InstallationsanleitungDer vollständige Ablauf ist auf der Apache JMeter Rekorder Seite.

⚠️ Versionshinweis: Die Screenshots im folgenden Walkthrough wurden mit einem älteren Gerät aufgenommen. JMeter Diese Version enthielt noch den WorkBench-Knoten. WorkBench wurde entfernt in JMeter 5.0. Alle Konzepte bleiben gültig; lediglich der Standort des Aufnahmegeräts ändert sich, und das aktuelle Verfahren ist das oben beschriebene.

Schritt 1) ​​Einrichten des HTTP-Proxyservers

Dies ist eine Schritt-für-Schritt-Anleitung zum Einrichten eines Proxys

  1. Start JMeter
  2. Auswählen Versuchsplan auf dem Baum
  3. Speichern Thread-GruppeKlicken Sie mit der rechten Maustaste auf Versuchsplan und eine neue Thread-Gruppe hinzufügen: Speichern > Threads (Benutzer) > Thread-Gruppe

Festlegen des HTTP-Proxyservers

  1. Speichern HTTP-AnfrageWählen Sie die Threadgruppe aus; klicken Sie mit der rechten Maustaste. Speichern > Konfigurationselement > Standardeinstellungen für HTTP-Anforderungen

Festlegen des HTTP-Proxyservers

Im neuen Element „HTTP Request Defaults“: Geben Sie als Servername oder IP „google.com“ ein. Die anderen Felder sollten Sie leer lassen

Festlegen des HTTP-Proxyservers

  1. Speichern AufnahmecontrollerKlicken Sie mit der rechten Maustaste auf die „Thread-Gruppe“ und fügen Sie einen Aufnahmecontroller hinzu: Speichern > Logik-Controller > Aufnahmecontroller

Festlegen des HTTP-Proxyservers

  1. Speichern Proxy-Server Zur Workbench. Klicken Sie mit der rechten Maustaste auf die Workbench und fügen Sie den HTTP-Proxy hinzu: Speichern > Nicht-Testelemente > HTTP-Proxyserver. Auf JMeter 5.x, Rechtsklick auf Versuchsplan Knoten stattdessen auswählen HTTP(S)-Testskript-Recorder.

Festlegen des HTTP-Proxyservers

  1. Stelle den Target Controller wo Ihre aufgezeichneten Skripte hinzugefügt werden

Festlegen des HTTP-Proxyservers

  1. Start Proxy-Server. Kehren Sie zum HTTP-Proxy-Server zurück und klicken Sie auf die Schaltfläche Start Knopf unten. Jetzt dein JMeter Proxy-Server starten

Festlegen des HTTP-Proxyservers

  1. Starten Sie Ihren Browser (ich habe verwendet Firefox), wählen Werkzeug > Option > Erweitert > Netzwerk > Rahmen Geben Sie den HTTP-Proxy wie in der Abbildung unten ein. Aktuell Firefox Die gleichen Dialoge werden erreicht durch Einstellungen > Allgemein > Netzwerkeinstellungen.

Festlegen des HTTP-Proxyservers

Schritt 2) Zeichnen Sie Ihre Aktivität auf

  1. Jetzt starten http://www.google.com in Ihrem Webbrowser (JMeter noch offen)
  2. Suchen Aktivitäten nach dem Schlüsselwort „guru99".
  3. Zurück zur JMeterKlicken Sie unter „HTTP-Proxyserver“ auf Stoppen wenn Sie fertig sind

Aktivität aufzeichnen

  1. Nachdem Sie die Aufnahme beendet haben, werden Sie sehen JMeter automatisch eine neue HTTP-Anfrage erstellt, wie in der Abbildung unten dargestellt

Aktivität aufzeichnen

JMeter hat bereits eine Benutzeranfrage erfasst die Startseite of Google Webseite. http://www.google.com/

Die anderen HTTP-Anfragen werden in der obigen Abbildung angezeigt. Sie sollten sie entfernen. Denn irgendwann JMeter zeichnet auch einige Werbelinks auf, während Sie nach dem Stichwort suchen. GoogleWir sollten sie in unserem Testplan ignorieren.

  1. Klicken Sie auf Datei > Testplan speichern unter

Aktivität aufzeichnen

  1. Es erscheint ein Dialogfeld > Geben Sie im Feld „Dateiname“ einen Namen für Ihren Testplan ein > Klicken Sie auf „Speichern“. Ihr Testplan ist nun unter dem Namen „RecordingTestPlan.jmx“ gespeichert.

Aktivität aufzeichnen

Schritt 3) Führen Sie Ihren Testplan aus

  1. Auswählen Themengruppe > Hinzufügen > Zuhörer > Zusammenfassender Bericht

Testplan ausführen

  1. Der zusammenfassende Bericht zeigt einige grundlegende Statistiken

Testplan ausführen

  1. Wählen Sie Thread-Gruppe aus und geben Sie die Informationen wie in der Abbildung unten ein

Testplan ausführen

Sie können den Artikel konsultieren. JMeter Performance Testing Um die Details zur Konfiguration von Thread-Gruppen zu erfahren.

  1. Bevor Sie den Test starten, wählen Sie „Zusammenfassender Bericht“. Wenn Sie bereit sind, einen Test auszuführen, wählen Sie Ausführen > Starten (Strg+R). JMeter Ihre Aktivität wird 100 Mal wiedergegeben. Während des Tests ändern sich die Statistiken, bis der Test abgeschlossen ist.

Testplan ausführen

Schritt 4) Speichern Sie Ihr Testergebnis

  1. Klicken Sie auf Tabellendaten speichern um das Testergebnis in einer Datei zu speichern

Testergebnis speichern

  1. Geben Sie den Namen des Testergebnisses ein und klicken Sie auf Speichern. Testergebnis in JMeter wird standardmäßig im *.csv-Format gespeichert

Testergebnis speichern

Laden Sie den Testplan für die Dateiaufzeichnung herunter

Laden Sie den Datei-HTTP-Proxyserver herunter

Aufzeichnung von HTTPS-Datenverkehr und Zertifikaten

Fast alle Websites verwenden mittlerweile HTTPS, was in der ursprünglichen Anleitung noch nicht der Fall war. Ein Proxy kann verschlüsselten Datenverkehr nur dann lesen, wenn der Browser ihm vertraut; daher ist ein zusätzlicher Schritt erforderlich.

Wenn das Aufnahmegerät startet, JMeter generiert ein temporäres Stammzertifikat mit dem Namen ApacheJMeterTemporaryRootCA.crt im Bin-Verzeichnis. Importieren Sie diese Datei als vertrauenswürdige Zertifizierungsstelle in den Browser und starten Sie den Browser anschließend neu. JMeter kann nun für jede Website ein eigenes Zertifikat vorlegen und die Sitzung zur Aufzeichnung entschlüsseln.

Drei Punkte sind es wert, bekannt zu sein:

  • Das Zertifikat erlischt nach sieben Tagen. Das ist Absicht. Lösch es und lass es. JMeter eine neue Kopie erstellen, anstatt die Gültigkeit zu verlängern.
  • Entfernen Sie es nach Gebrauch. Das Belassen eines vertrauenswürdigen Stammzertifikats auf einem funktionierenden Rechner stellt ein echtes Sicherheitsrisiko dar, kein theoretisches.
  • Manche Anwendungen lehnen es ab. Websites, die Certificate Pinning oder Mutual TLS verwenden, können über einen Proxy überhaupt nicht aufgezeichnet werden; das Skript muss stattdessen manuell mit den Entwicklertools des Browsers erstellt werden.

Korrelation: Ein aufgezeichnetes Skript wiederholbar machen

Ein aufgezeichnetes Skript reproduziert exakt den Ablauf einer einzelnen Aktion, was beim zweiten Mal jedoch selten der Realität entspricht. Sitzungskennungen, Token und generierte Schlüssel, die während der Aufzeichnung erfasst wurden, sind zum Zeitpunkt der erneuten Skriptwiedergabe ungültig, und die Ausführung schlägt auf eine Weise fehl, die wie Anwendungsfehler aussieht.

Korrelation ist die Lösung. Postprozessor wie zum Beispiel der reguläre Ausdruck Extractor oder das JSON ExtracTor erfasst den aktuellen Wert aus der Login-Antwort, speichert ihn in einer Variablen und verweist bei späteren Anfragen auf diese Variable anstatt auf den aufgezeichneten Literalwert.

Der Arbeitsablauf ist kurz:

  1. Spielen Sie das Skript einmal mit einem View Results Tree-Listener ab und finden Sie die erste fehlgeschlagene Anfrage.
  2. Vergleichen Sie die fehlgeschlagene Anfrage mit der Aufzeichnung. Jeder Wert, der sich zwischen zwei Durchläufen unterscheidet, muss korreliert werden.
  3. Füge ein Beispiel hinzutracErstelle dann die fest codierte Variable durch die Variablenreferenz, die die Antwort erzeugt hat.
  4. Fügen Sie ein ein Behauptung Eine Seite, die den HTTP-Statuscode 200 mit einer Fehlermeldung zurückgibt, besteht den Test also trotzdem nicht.

Erst nach der Korrelation kann das Skript sicher skaliert werden. Die Ausführung einer unkorrelierten Aufzeichnung mit hundert Benutzern misst die Fehlerbehandlung, nicht aber die tatsächliche Fehlertoleranz. LeistungWeitere Elemente werden im weiteren Verlauf behandelt. JMeter Tutorials.

Problemlösung

Sollten Sie bei der Ausführung des oben beschriebenen Szenarios auf ein Problem stoßen, gehen Sie wie folgt vor:

  1. Überprüfen Sie, ob Sie über einen Proxy eine Verbindung zum Internet herstellen. Wenn ja, entfernen Sie den Proxy.
  2. Öffnen Sie eine neue Instanz von JMeter.
  3. Öffnen Sie die Datei RecordingTestPlan.jmx in JMeter.
  4. Rechtsklick auf Workbench > Zusammenführen > HTTP Proxy Server.jmx auswählen. JMeter 5.x, stattdessen in den Testplan-Knoten einfügen, da WorkBench nicht mehr existiert.
  5. Klicken Sie auf Themengruppe > Zusammenfassender Bericht.
  6. Führe den Test aus.

Zwei weitere Symptome sind für die meisten verbleibenden Fehler verantwortlich. Meldet der Browser, dass keine Verbindung hergestellt werden kann, wurde der Rekorder nicht gestartet oder der im Browser eingestellte Port stimmt nicht mit dem im JMeterWenn Seiten normal geladen werden, aber im Baum nichts angezeigt wird, handelt es sich um HTTPS-Datenverkehr und das Zertifikat wurde nicht importiert.

Häufig gestellte Fragen

Es wurde entfernt in JMeter 5.0. Nicht-Test-Elemente wie der HTTP(S)-Testskript-Recorder werden jetzt direkt unter dem Testplan-Knoten hinzugefügt.

Speichern URL Im Register „Anforderungsfilterung“ des Recorders können Sie Muster ausschließen, die häufig verwendete statische Dateierweiterungen abdecken. Dadurch wird der Großteil der Störungen entfernt, bevor die Anfrage das Skript erreicht.

Die KI klassifiziert aufgezeichnete Sampler in Geschäftsschritte und Störgeräusche von Drittanbietern und schlägt dann vor, welche gelöscht werden sollen und welche Werte korreliert werden müssen, wodurch eine Rohaufzeichnung schneller in ein nutzbares Skript umgewandelt wird.

Ja. Anhand des Antworttextes und des zu erfassenden Werts erstellt die KI einen regulären Ausdruck oder ein Trennzeichenpaar. Überprüfen Sie dies in der Ergebnisstruktur, da ein Muster in einer Antwort übereinstimmen kann, in einer anderen jedoch nicht.

Der Browser vertraut dem JMeter Proxy. Apache importierenJMeterTemporaryRootCA.crt aus der JMeter Als vertrauenswürdige Instanz den Bin-Ordner festlegen, den Browser neu starten und die Aufnahme erneut durchführen.

Ja. Stellen Sie den WLAN-Proxy des Geräts auf die IP-Adresse und den Port des Aufnahmegeräts ein und installieren Sie anschließend die Software. JMeter Zertifikat auf dem Gerät. Anwendungen, die Certificate Pinning verwenden, können weiterhin nicht aufgezeichnet werden.

Nein. Die grafische Oberfläche dient zum Erstellen und Debuggen. Führen Sie den eigentlichen Test im Kommandozeilenmodus aus. Dieser benötigt deutlich weniger Speicher und erzeugt am Ende einen HTML-Bericht.

Testpläne werden als .jmx gespeichert, einem XML-Format, das sich gut für die Versionskontrolle eignet. Ergebnisse werden als .jtl geschrieben, standardmäßig im CSV-Format, können aber auch als XML gespeichert werden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: