JMeter kan HTTP-request-samplers genereren door te fungeren als een lokale opnameproxy tussen een browser en een geautoriseerde doelapplicatie. De huidige versies noemen dit onderdeel de HTTP(S) Test Script Recorder . Het legt één browsersessie vast in een Recording Controller, waarna het script moet worden opgeschoond, gecorreleerd, gevalideerd en uitgevoerd als een test op protocolniveau.
Wat is de JMeter HTTP-proxyserver?
De recorder luistert naar een lokale haven, meestal 8888Een browser stuurt HTTP- en HTTPS-verzoeken naar die proxy, en JMeter zet overeenkomend verkeer om in samples onder een geselecteerde controller. Tijdens het afspelen stuurt JMeter de verzoeken direct; er wordt geen browser gestart voor elke virtuele gebruiker.
Waarom opnemen in plaats van het script met de hand te schrijven?
- Legt de realistische volgorde van verzoeken, omleidingen, formulieren en API's op de achtergrond vast.
- Onthult XHR- of fetch-aanroepen die gemakkelijk over het hoofd gezien kunnen worden.
- Hiermee creëer je snel een basislijn voor een complex gebruikerstraject.
- Vermindert transcriptiefouten in kopteksten en parameters.
Handmatige constructie blijft overzichtelijker voor een kleine, gedocumenteerde API. Het vastleggen van de code is nuttig wanneer het netwerkgedrag van de browser nog niet volledig begrepen is. Zie onze handleiding voor proxytypen voor meer informatie over de terminologie.
Hoe neem je een script op in JMeter 5.x?
- Start JMeter in GUI-modus om scripts te maken.
- Voeg een threadgroep toe aan het testplan.
- Voeg een opnamecontroller toe onder de threadgroep.
- Voeg waar nodig standaardinstellingen voor HTTP-verzoeken en een HTTP-cookiebeheerder toe.
- Voeg de HTTP(S)-testscriptrecorder toe en selecteer de opnamecontroller als doel.
- Gebruik inclusie-/exclusiepatronen om irrelevant verkeer te beperken.
De officiële Apache JMeter-opnamehandleiding is de gezaghebbende, versie-specifieke referentie.
Stap 1) De HTTP-proxyserver instellen
8888, stel de doelcontroller in en klik Start.Configureer de testbrowser met een HTTP- en HTTPS-proxyhost. 127.0.0.1 en dezelfde poort. Als de browser in een andere VM of container draait, verwijst localhost naar die omgeving; gebruik in dat geval een goedgekeurd, bereikbaar privéadres.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Filter niet te agressief tijdens de eerste ronde, want een applicatie-API kan een ander subdomein gebruiken. Registreer één keer, inspecteer de hosts en verfijn vervolgens de patronen.
Stap 2) Registreer uw activiteit
- Start de recorder en vertrouw het tijdelijke certificaat ervan alleen in de geïsoleerde testbrowser.
- Open de geautoriseerde testomgeving.
- Voltooi één schone reis met een normaal tempo.
- Stop de opname direct na de laatste zakelijke handeling.
- Herstel de normale proxy-instellingen van de browser.
Hernoem samplers op basis van bedrijfsacties en groepeer gerelateerde verzoeken onder transactiecontrollers. Verwijder analyses, advertenties, browserupdates, chatwidgets en dubbele statische bronnen, tenzij ze expliciet binnen het toepassingsgebied vallen.
Controleer elke sampler op geheimen. Wachtwoorden moeten afkomstig zijn van beveiligde runtimegegevens, terwijl het wijzigen van tokens correlatie vereist.
Stap 3) Voer uw testplan uit
Valideer één gebruiker en één iteratie voordat u de belasting verhoogt. Gebruik tijdelijk de weergave 'Resultatenboom', controleer omleidingen en antwoordbody's en voeg beweringen toe voor het verwachte bedrijfsresultaat. Een HTTP 200-antwoord alleen bewijst niet dat de login of afrekening is gelukt.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Na het debuggen, verwijder de zware luisteraars en voer de applicatie zonder grafische gebruikersinterface uit:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
De rapportmap moet nieuw of leeg zijn. Verhoog de belasting geleidelijk en monitor zowel het doelsysteem als JMeter.
Stap 4) Sla uw testresultaat op
Bewaar het herbruikbare plan als een .jmx sla het bestand op en bewaar de gegenereerde gegevens apart:
- JMX: samplers, controllers, beweringen, timers, variabelen en configuratie.
- JTL: Ruwe monsterresultaten voor analyse.
- HTML-dashboard: percentielen, doorvoer, fouten en actieve threads.
- Serverstatistieken: CPU-, geheugen-, database-, wachtrij- en servicetelemetrie.
Versiebeheer van het plan met niet-geheime eigenschappen en testgegevens. Registreer de JMeter- en Java-versies, de beoogde build, de omgeving, het aantal gebruikers, de opstartfase en de duur.
Het vastleggen van HTTPS-verkeer en certificaten
Voor HTTPS genereert JMeter een tijdelijk certificaat van de certificeringsinstantie wanneer de recorder start. Importeer dit certificaat alleen in de daarvoor bestemde testbrowser, neem de geautoriseerde site op en verwijder het vervolgens weer.
- Start de HTTP(S)-testscriptrecorder.
- Zoek het gegenereerde ApacheJMeterTemporaryRootCA-certificaat op.
- Importeer het als een vertrouwde autoriteit in het geïsoleerde profiel.
- Leg het goedgekeurde HTTPS-traject vast.
- Verwijder het certificaat wanneer u klaar bent.
Certificaatpinning, wederzijdse TLS, beheerde browsers, mobiele apps en nieuwere transportprotocollen kunnen onderschepping blokkeren. Verzwak de beveiligingsmaatregelen in de productieomgeving niet. Gebruik een staging-build, API-specificatie of een goedgekeurde alternatieve methode voor het vastleggen van gegevens.
Correlatie: Een opgenomen script opnieuw afspeelbaar maken
Sessie-ID's, CSRF-tokens, OAuth-status, verzoeksignaturen en resource-ID's veranderen tussen verschillende uitvoeringen. Correlatie haalt een actuele waarde uit een reactie en vervangt deze in latere verzoeken.
- Zoek het antwoord dat als eerste de dynamische waarde bevat.
- Voeg een JSON-, CSS-, XPath- of reguliere expressie-extractor toe.
- Sla het resultaat op in een JMeter-variabele met een naam.
- Vervang later vastgelegde waarden door de variabeleverwijzing.
- Foutmelding verschijnt duidelijk wanneer de extractie geen overeenkomst oplevert.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Parameterisering levert onafhankelijke gebruikersgegevens, vaak afkomstig uit CSV-bestanden. Correlatie legt servergegenereerde gegevens vast tijdens de uitvoering. Realistische plannen vereisen doorgaans beide.
Problemen oplossen
| probleem | waarschijnlijke oorzaak | Bepalen |
|---|---|---|
| Geen verzoeken geregistreerd | Onjuiste proxy, gestopte recorder, poortconflict of bypass-regel | Bevestig de host en poort, start de recorder en verwijder de doeluitsluitingen. |
| HTTPS-waarschuwing | Tijdelijke CA ontbreekt of is verlopen | Genereer een nieuw opnamecertificaat en importeer dit alleen in het testprofiel. |
| Te veel verkeer | Uitbreidingen, telemetrie, andere tabbladen of brede patronen | Gebruik een schoon profiel en verfijn de filters voor wel/niet opnemen. |
| Het opnieuw proberen van de inlogpoging mislukt | Ontbrekende cookies, tokens, OAuth-flow of correlatie | Voeg Cookie Manager toe, extraheer dynamische waarden en inspecteer omleidingen. |
| Browser offline zetten | Het verwijst nog steeds naar de gestopte lokale proxy. | Herstel de automatische of proxyvrije instellingen. |
| JMeter geheugenfout | GUI-listeners of grote responsopslag | Gebruik de modus zonder grafische gebruikersinterface en beperk de opgeslagen responsgegevens. |
| Anders dan een browser | JMeter rendert of voert geen JavaScript-code van de pagina uit. | Test de onderliggende API's en gebruik browsertools voor het meten van de weergaveprestaties. |
JMeter is een tool voor het meten van protocolprestaties. Het kan op zichzelf geen visuele gebeurtenissen zoals Largest Contentful Paint meten.
Veelgestelde vragen
Wat heeft de naam van de HTTP-proxyserver in JMeter vervangen?
De component heet nu HTTP(S) Test Script Recorder.
Welke opnamepoort moet ik gebruiken?
Elke ongebruikte lokale poort is geschikt. Poort 8888 is gebruikelijk en de browser moet dezelfde waarde gebruiken.
Kan JMeter HTTPS-verkeer registreren?
Ja, als de geïsoleerde testbrowser het tijdelijke opnamecertificaat van JMeter vertrouwt.
Waarom mislukt een opgenomen script bij het afspelen?
Dynamische tokens, cookies, authenticatiestromen, verschillen tussen hosts en ontbrekende gegevens vereisen vaak correlatie en parameterisering.
Kan JMeter Chrome opnemen?
Ja. Configureer een schoon Chrome-profiel om de lokale recorder van JMeter te gebruiken.
Moet ik belastingstests uitvoeren vanuit de JMeter GUI?
Nee. Bouw en debug in de GUI-modus en voer vervolgens het laadproces uit in de niet-GUI-modus.
Gedraagt JMeter zich als een echte browser?
Nee. Het verstuurt protocolverzoeken, maar genereert geen HTML en voert geen JavaScript uit in de browser.
Is het veilig om een productielogin op te nemen?
Gebruik bij voorkeur staging- en testaccounts. Voor het vastleggen van gegevens in de productieomgeving is expliciete toestemming en strikte geheimhouding vereist.
