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.
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
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.
- 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.
- 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.
- Stellen Sie den Port ein. Standardmäßig wird Port 8888 verwendet. Jeder freie Port funktioniert, vorausgesetzt, der Browser ist entsprechend konfiguriert.
- 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.
- 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.
- 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.
- 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.
- Anhalten und aufräumen. Drücken Sie auf Stopp, löschen Sie alle verbleibenden Anrufe von Drittanbietern und speichern Sie den Tarif.
- 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
- Start JMeter
- Auswählen Versuchsplan auf dem Baum
- Speichern Thread-GruppeKlicken Sie mit der rechten Maustaste auf Versuchsplan und eine neue Thread-Gruppe hinzufügen: Speichern > Threads (Benutzer) > Thread-Gruppe
- Speichern HTTP-AnfrageWählen Sie die Threadgruppe aus; klicken Sie mit der rechten Maustaste. Speichern > Konfigurationselement > Standardeinstellungen für HTTP-Anforderungen
Im neuen Element „HTTP Request Defaults“: Geben Sie als Servername oder IP „google.com“ ein. Die anderen Felder sollten Sie leer lassen
- Speichern AufnahmecontrollerKlicken Sie mit der rechten Maustaste auf die „Thread-Gruppe“ und fügen Sie einen Aufnahmecontroller hinzu: Speichern > Logik-Controller > Aufnahmecontroller
- 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.
- Stelle den Target Controller wo Ihre aufgezeichneten Skripte hinzugefügt werden
- 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
- 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.
Schritt 2) Zeichnen Sie Ihre Aktivität auf
- Jetzt starten http://www.google.com in Ihrem Webbrowser (JMeter noch offen)
- Suchen Aktivitäten nach dem Schlüsselwort „guru99".
- Zurück zur JMeterKlicken Sie unter „HTTP-Proxyserver“ auf Stoppen wenn Sie fertig sind
- Nachdem Sie die Aufnahme beendet haben, werden Sie sehen JMeter automatisch eine neue HTTP-Anfrage erstellt, wie in der Abbildung unten dargestellt
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.
- Klicken Sie auf Datei > Testplan speichern unter
- 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.
Schritt 3) Führen Sie Ihren Testplan aus
- Auswählen Themengruppe > Hinzufügen > Zuhörer > Zusammenfassender Bericht
- Der zusammenfassende Bericht zeigt einige grundlegende Statistiken
- Wählen Sie Thread-Gruppe aus und geben Sie die Informationen wie in der Abbildung unten ein
Sie können den Artikel konsultieren. JMeter Performance Testing Um die Details zur Konfiguration von Thread-Gruppen zu erfahren.
- 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.
Schritt 4) Speichern Sie Ihr Testergebnis
- Klicken Sie auf Tabellendaten speichern um das Testergebnis in einer Datei zu speichern
- Geben Sie den Namen des Testergebnisses ein und klicken Sie auf Speichern. Testergebnis in JMeter wird standardmäßig im *.csv-Format gespeichert
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:
- Spielen Sie das Skript einmal mit einem View Results Tree-Listener ab und finden Sie die erste fehlgeschlagene Anfrage.
- Vergleichen Sie die fehlgeschlagene Anfrage mit der Aufzeichnung. Jeder Wert, der sich zwischen zwei Durchläufen unterscheidet, muss korreliert werden.
- Füge ein Beispiel hinzutracErstelle dann die fest codierte Variable durch die Variablenreferenz, die die Antwort erzeugt hat.
- 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:
- Überprüfen Sie, ob Sie über einen Proxy eine Verbindung zum Internet herstellen. Wenn ja, entfernen Sie den Proxy.
- Öffnen Sie eine neue Instanz von JMeter.
- Öffnen Sie die Datei RecordingTestPlan.jmx in JMeter.
- 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.
- Klicken Sie auf Themengruppe > Zusammenfassender Bericht.
- 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.




















