JMeter kann HTTP-Request-Sampler generieren, indem es als lokaler Aufzeichnungsproxy zwischen einem Browser und einer autorisierten Zielanwendung fungiert. In aktuellen Versionen wird diese Komponente als HTTP(S)-Testskript-Recorder bezeichnet . Sie zeichnet einen Browserdurchlauf zu einem Aufzeichnungscontroller auf. Anschließend muss das Skript bereinigt, korreliert, validiert und als Protokolltest ausgeführt werden.
Was ist der JMeter HTTP-Proxy-Server?
Der Rekorder empfängt Daten über einen lokalen Port, üblicherweise 8888Ein Browser sendet HTTP- und HTTPS-Anfragen an diesen Proxy, und JMeter wandelt den entsprechenden Datenverkehr in Sampler unter einem ausgewählten Controller um. Während der Wiedergabe sendet JMeter die Anfragen direkt; es wird nicht für jeden virtuellen Benutzer ein Browser gestartet.
Warum aufnehmen, anstatt das Skript von Hand zu erstellen?
- Erfasst realistische Anfragereihenfolgen, Weiterleitungen, Formulare und Hintergrund-APIs.
- Zeigt XHR- oder Fetch-Aufrufe an, die leicht zu übersehen sind.
- Erstellt eine schnelle Ausgangsbasis für eine komplexe Nutzerreise.
- Reduziert Übertragungsfehler in Headern und Parametern.
Die manuelle Erstellung ist für eine kleine, dokumentierte API weiterhin übersichtlicher. Aufzeichnungen sind hilfreich, wenn das Netzwerkverhalten des Browsers noch nicht vollständig verstanden ist. Die Terminologie finden Sie in unserem Leitfaden zu Proxy-Typen.
Wie man ein Skript in JMeter 5.x aufzeichnet
- Starten Sie JMeter im GUI-Modus, um Skripte zu erstellen.
- Füge dem Testplan eine Thread-Gruppe hinzu.
- Fügen Sie unter der Thread-Gruppe einen Aufzeichnungscontroller hinzu.
- Fügen Sie gegebenenfalls HTTP-Anforderungsstandardeinstellungen und einen HTTP-Cookie-Manager hinzu.
- Fügen Sie den HTTP(S)-Testskript-Recorder hinzu und wählen Sie den Aufzeichnungscontroller als Ziel aus.
- Verwenden Sie Einschluss-/Ausschlussmuster, um nicht zum selben Thema gehörenden Datenverkehr einzuschränken.
Der offizielle Apache JMeter-Aufzeichnungsleitfaden ist die maßgebliche versionsspezifische Referenz.
Schritt 1) Einrichten des HTTP-Proxyservers
8888Wählen Sie den Zielcontroller aus und klicken Sie Start.Konfigurieren Sie den Testbrowser mit HTTP- und HTTPS-Proxy-Host 127.0.0.1 und derselbe Port. Wenn der Browser in einer anderen virtuellen Maschine oder einem Container ausgeführt wird, bezieht sich localhost auf diese Umgebung; verwenden Sie stattdessen eine genehmigte, erreichbare private Adresse.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Filtern Sie beim ersten Durchlauf nicht zu aggressiv, da eine Anwendungs-API möglicherweise eine andere Subdomain verwendet. Erfassen Sie die Daten einmal, überprüfen Sie die Hosts und verfeinern Sie anschließend die Filtermuster.
Schritt 2) Zeichnen Sie Ihre Aktivität auf
- Starten Sie den Rekorder und vertrauen Sie dessen temporärem Zertifikat nur im isolierten Testbrowser.
- Öffnen Sie die autorisierte Testumgebung.
- Führe eine fehlerfreie Fahrt in menschlicher Geschwindigkeit durch.
- Die Aufzeichnung muss unmittelbar nach Abschluss des letzten Geschäftsvorgangs beendet werden.
- Stellen Sie die normalen Proxy-Einstellungen des Browsers wieder her.
Benennen Sie Sampler nach Geschäftsaktionen um und gruppieren Sie zugehörige Anfragen unter Transaktionscontrollern. Entfernen Sie Analysen, Werbung, Browser-Updates, Chat-Widgets und doppelte statische Ressourcen, sofern diese nicht explizit im Geltungsbereich enthalten sind.
Untersuchen Sie jeden Sampler auf Geheimnisse. Passwörter sollten aus geschützten Laufzeitdaten stammen, während das Ändern von Token eine Korrelation erfordert.
Schritt 3) Führen Sie Ihren Testplan aus
Validieren Sie einen Benutzer und eine Iteration, bevor Sie die Last erhöhen. Verwenden Sie vorübergehend die Ergebnisstruktur, prüfen Sie Weiterleitungen und Antworttexte und fügen Sie Assertions für das erwartete Geschäftsergebnis hinzu. Ein HTTP-200-Statuscode allein beweist nicht, dass die Anmeldung oder der Bezahlvorgang erfolgreich war.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Nach dem Debuggen sollten Sie ressourcenintensive Prozesse entfernen und die Nicht-GUI-Version ausführen:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Das Berichtsverzeichnis muss neu oder leer sein. Erhöhen Sie die Last schrittweise und überwachen Sie sowohl das Zielsystem als auch JMeter.
Schritt 4) Speichern Sie Ihr Testergebnis
Speichern Sie den wiederverwendbaren Plan als .jmx Datei und generierte Daten getrennt aufbewahren:
- JMX: Sampler, Controller, Assertions, Timer, Variablen und Konfiguration.
- JTL: Rohdaten der Proben zur Analyse.
- HTML-Dashboard: Perzentile, Durchsatz, Fehler und aktive Threads.
- Servermetriken: CPU-, Speicher-, Datenbank-, Warteschlangen- und Diensttelemetrie.
Erstellen Sie eine Version des Plans mit nicht-geheimen Eigenschaften und Testdaten. Protokollieren Sie JMeter- und Java-Versionen, Ziel-Build, Umgebung, Benutzeranzahl, Anlaufphase und Dauer.
Aufzeichnung von HTTPS-Datenverkehr und Zertifikaten
Für HTTPS generiert JMeter beim Start der Aufzeichnung eine temporäre Zertifizierungsstelle. Importieren Sie diese nur in den dedizierten Testbrowser, zeichnen Sie die autorisierte Website auf und entfernen Sie sie anschließend.
- Starten Sie den HTTP(S)-Testskript-Recorder.
- Suchen Sie das generierte ApacheJMeterTemporaryRootCA-Zertifikat.
- Importieren Sie es als vertrauenswürdige Autorität im isolierten Profil.
- Protokollieren Sie den genehmigten HTTPS-Ablauf.
- Entfernen Sie das Zertifikat nach Abschluss der Arbeiten.
Certificate Pinning, Mutual TLS, verwaltete Browser, mobile Apps und neuere Transportprotokolle können das Abfangen von Daten verhindern. Schwächen Sie die Sicherheitsvorkehrungen in der Produktionsumgebung nicht. Verwenden Sie stattdessen eine Staging-Umgebung, eine API-Spezifikation oder eine genehmigte alternative Erfassungsmethode.
Korrelation: Ein aufgezeichnetes Skript wiederholbar machen
Sitzungs-IDs, CSRF-Token, OAuth-Status, Anforderungssignaturen und Ressourcen-IDs ändern sich zwischen den Ausführungen. Die Korrelation extrahiert einen aktuellen Wert aus einer Antwort und ersetzt ihn in späteren Anfragen.
- Suchen Sie die Antwort, die als erste den dynamischen Wert enthält.
- Fügen Sie einen JSON-, CSS-, XPath- oder regulären Ausdrucksextraktor hinzu.
- Speichere das Ergebnis in einer benannten JMeter-Variablen.
- Ersetzen Sie später fest codierte Werte durch die Variablenreferenz.
- Bei einem Fehler, wenn die Extraktion keine Übereinstimmung liefert, soll eindeutig fehlgeschlagen werden.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Die Parametrisierung liefert unabhängige Benutzerdaten, häufig aus CSV-Dateien. Die Korrelation erfasst serverseitig generierte Daten während der Ausführung. Realistische Pläne benötigen in der Regel beides.
Problemlösung
| Aufgabenstellung: | Wahrscheinliche Ursache | Fixieren |
|---|---|---|
| Es wurden keine Anfragen registriert | Falscher Proxy, gestoppter Recorder, Portkonflikt oder Umgehungsregel | Host und Port bestätigen, Recorder starten und Zielausschlüsse entfernen. |
| HTTPS-Warnung | Vorübergehende Zertifizierungsbescheinigung fehlt oder ist abgelaufen | Generieren Sie ein neues Rekorderzertifikat und importieren Sie es nur in das Testprofil. |
| Zu viel Verkehr | Erweiterungen, Telemetrie, andere Registerkarten oder allgemeine Muster | Verwenden Sie ein sauberes Profil und verfeinern Sie die Einschluss-/Ausschlussfilter. |
| Anmeldeversuch schlägt fehl | Fehlende Cookies, Tokens, OAuth-Ablauf oder Korrelation | Fügen Sie den Cookie-Manager hinzu, extrahieren Sie dynamische Werte und überprüfen Sie Weiterleitungen. |
| Browser anschließend offline | Es verweist weiterhin auf den gestoppten lokalen Proxy. | Automatische oder No-Proxy-Einstellungen wiederherstellen. |
| JMeter-Speicherfehler | GUI-Listener oder großer Antwortspeicher | Verwenden Sie den Nicht-GUI-Modus und beschränken Sie die gespeicherten Antwortdaten. |
| Anders als im Browser | JMeter rendert oder führt kein Seiten-JavaScript aus. | Testen Sie die zugrundeliegenden APIs und verwenden Sie Browser-Tools zur Ermittlung von Rendering-Metriken. |
JMeter ist ein Tool zur Messung der Protokollleistung. Es kann visuelle Ereignisse wie Largest Contentful Paint nicht selbstständig messen.
Häufig gestellte Fragen
Was hat den Namen des HTTP-Proxy-Servers in JMeter ersetzt?
Die Komponente heißt nun HTTP(S) Test Script Recorder.
Welchen Aufnahmeanschluss soll ich verwenden?
Jeder ungenutzte lokale Port funktioniert. Port 8888 ist häufig, und der Browser muss denselben Wert verwenden.
Kann JMeter HTTPS-Datenverkehr aufzeichnen?
Ja, wenn der isolierte Testbrowser dem temporären Aufzeichnungszertifikat von JMeter vertraut.
Warum funktioniert die Wiedergabe eines aufgezeichneten Skripts nicht?
Dynamische Token, Cookies, Authentifizierungsabläufe, Hostunterschiede und fehlende Daten erfordern häufig Korrelation und Parametrisierung.
Kann JMeter Chrome aufzeichnen?
Ja. Konfigurieren Sie ein sauberes Chrome-Profil, um den lokalen Recorder von JMeter zu verwenden.
Soll ich Lasttests über die JMeter-Benutzeroberfläche ausführen?
Nein. Kompilieren und debuggen Sie im GUI-Modus, führen Sie den Ladevorgang anschließend im Nicht-GUI-Modus aus.
Verhält sich JMeter wie ein echter Browser?
Nein. Es sendet zwar Protokollanfragen, rendert aber kein HTML und führt auch kein Browser-JavaScript aus.
Ist es sicher, ein Produktiv-Login aufzuzeichnen?
Bevorzugen Sie Staging- und Testkonten. Die Erfassung in der Produktionsumgebung erfordert eine ausdrückliche Autorisierung und strikte Geheimhaltung.
