JMeter kan generere HTTP-forespørselssamplere ved å fungere som en lokal opptaksproxy mellom en nettleser og et autorisert målprogram. Nåværende versjoner kaller denne komponenten HTTP(S) Test Script Recorder . Den registrerer én nettleserreise i en opptakskontroller, hvoretter skriptet må renses, korreleres, valideres og kjøres som en protokollnivåtest.
Hva er JMeter HTTP-proxyserveren?
Opptakeren lytter på en lokal port, vanligvis 8888En nettleser sender HTTP- og HTTPS-forespørsler til den proxyen, og JMeter konverterer samsvarende trafikk til samplere under en valgt kontroller. Under avspilling sender JMeter forespørsler direkte; den starter ikke en nettleser for hver virtuelle bruker.
Hvorfor spille inn i stedet for å bygge manuset for hånd?
- Fanger opp realistisk forespørselsrekkefølge, omdirigeringer, skjemaer og bakgrunns-API-er.
- Avslører XHR- eller hentekall som er lette å overse.
- Skaper en rask grunnlinje for en kompleks brukerreise.
- Reduserer transkripsjonsfeil i overskrifter og parametere.
Manuell konstruksjon forblir renere for et lite dokumentert API. Registrering hjelper når nettlesernettverkets oppførsel ennå ikke er forstått. For terminologi, se vår veiledning for proxy-typer.
Slik spiller du inn et skript i JMeter 5.x
- Start JMeter i GUI-modus for å opprette skript.
- Legg til en trådgruppe i testplanen.
- Legg til en opptakskontroller under trådgruppen.
- Legg til standardinnstillinger for HTTP-forespørsler og en HTTP-informasjonskapselbehandler der det er aktuelt.
- Legg til HTTP(S) Test Script Recorder og velg Recording Controller som mål.
- Bruk inkluderings-/ekskluderingsmønstre for å begrense urelatert trafikk.
Den offisielle Apache JMeter-opptaksveiledningen er den autoritative versjonsspesifikke referansen.
Trinn 1) Angi HTTP Proxy-serveren
8888, angi målkontrolleren og klikk på Start.Konfigurer testnettleseren med HTTP- og HTTPS-proxyvert 127.0.0.1 og samme port. Hvis nettleseren kjører i en annen virtuell maskin eller container, refererer localhost til det miljøet; bruk en godkjent tilgjengelig privat adresse i stedet.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Ikke filtrer for aggressivt ved første omgang, da dette kan føre til at et applikasjons-API bruker et annet underdomene. Registrer én gang, inspiser vertene, og finjuster deretter mønstrene.
Trinn 2) Registrer aktiviteten din
- Start opptakeren og stol bare på det midlertidige sertifikatet i den isolerte testnettleseren.
- Åpne det autoriserte testmiljøet.
- Utfør én ren reise i menneskelig hastighet.
- Stopp opptaket umiddelbart etter den siste forretningshandlingen.
- Gjenopprett nettleserens normale proxy-innstilling.
Gi samplere nytt navn etter forretningshandling og grupperelaterte forespørsler under Transaksjonskontrollere. Fjern analyser, annonser, nettleseroppdateringer, chat-widgeter og dupliserte statiske ressurser med mindre de eksplisitt er innenfor omfanget.
Undersøk hver sampler for hemmeligheter. Passord bør komme fra beskyttede runtime-data, mens endring av tokens krever korrelasjon.
Trinn 3) Kjør testplanen din
Valider én bruker og én iterasjon før du legger til last. Bruk midlertidig Vis resultattre, sjekk omdirigeringer og svartekster, og legg til påstander for forventet forretningsresultat. HTTP 200 alene beviser ikke at innlogging eller utsjekking var vellykket.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Etter feilsøking, fjern tunge lyttere og kjør ikke-GUI:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Rapportkatalogen må være ny eller tom. Øk belastningen gradvis og overvåk målsystemet samt JMeter.
Trinn 4) Lagre testresultatet
Lagre den gjenbrukbare planen som en .jmx fil og hold genererte data separate:
- JMX: samplere, kontrollere, påstander, tidtakere, variabler og konfigurasjon.
- JTL: rå prøveresultater for analyse.
- HTML-dashbord: persentiler, gjennomstrømning, feil og aktive tråder.
- Servermålinger: CPU-, minne-, database-, kø- og tjenestetelemetri.
Versjonér planen med ikke-hemmelige egenskaper og testdata. Registrer JMeter- og Java-versjoner, målbygg, miljø, brukerantall, opptrapping og varighet.
Registrering av HTTPS-trafikk og sertifikater
For HTTPS genererer JMeter en midlertidig sertifikatmyndighet når opptakeren starter. Importer den kun til den dedikerte testnettleseren, registrer det autoriserte nettstedet, og fjern det deretter.
- Start HTTP(S)-testskriptopptakeren.
- Finn det genererte ApacheJMeterTemporaryRootCA-sertifikatet.
- Importer den som en klarert autoritet i den isolerte profilen.
- Registrer den godkjente HTTPS-reisen.
- Fjern sertifikatet når du er ferdig.
Sertifikatlåsing, gjensidig TLS, administrerte nettlesere, mobilapper og nyere transportprotokoller kan blokkere avlytting. Ikke svekk sikkerhetskontrollene for produksjon. Bruk en staging build, API-spesifikasjon eller godkjent alternativ fangstmetode.
Korrelasjon: Gjøre et innspilt manus avspillbart
Økt-ID-er, CSRF-tokener, OAuth-status, forespørselssignaturer og ressurs-ID-er endres mellom kjøringer. Korrelasjon trekker ut en ny verdi fra ett svar og erstatter den med senere forespørsler.
- Finn svaret som først inneholder den dynamiske verdien.
- Legg til en JSON-, CSS-, XPath- eller regulæruttrykksuttrekker.
- Lagre resultatet i en navngitt JMeter-variabel.
- Erstatt senere hardkodede verdier med variabelreferansen.
- Feiler tydelig når uttrekkingen ikke returnerer treff.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Parameterisering leverer uavhengige brukerdata, ofte fra CSV. Korrelasjon fanger opp servergenererte data under utførelse. Realistiske planer trenger vanligvis begge deler.
Feilsøking
| Problem | Sannsynlig årsak | Fix |
|---|---|---|
| Ingen forespørsler registrert | Feil proxy, stoppet opptaker, portkonflikt eller omgåelsesregel | Bekreft vert og port, start opptakeren og fjern målutelatelser. |
| HTTPS-advarsel | Midlertidig CA mangler eller er utløpt | Generer et nytt opptakersertifikat og importer det kun til testprofilen. |
| For mye trafikk | Utvidelser, telemetri, andre faner eller generelle mønstre | Bruk en ren profil og finjuster inkluderings-/ekskluderingsfiltre. |
| Avspilling av pålogging mislykkes | Manglende informasjonskapsler, tokener, OAuth-flyt eller korrelasjon | Legg til Cookie Manager, trekk ut dynamiske verdier og inspiser omdirigeringer. |
| Nettleseren er frakoblet etterpå | Den peker fortsatt på den stoppede lokale proxyen | Gjenopprett automatiske innstillinger eller innstillinger uten proxy. |
| JMeter-minnefeil | GUI-lyttere eller stor responslagring | Bruk ikke-GUI-modus og begrens lagrede svardata. |
| Forskjellig fra nettleser | JMeter gjengir eller kjører ikke JavaScript for sider | Test underliggende API-er og bruk nettleserverktøy for gjengivelsesmålinger. |
JMeter er et ytelsesverktøy for protokoller. Det kan ikke måle visuelle hendelser som Største Innholdsrike Maling alene.
Spørsmål og svar
Hva erstattet navnet på HTTP-proxyserveren i JMeter?
Komponenten heter nå HTTP(S) Test Script Recorder.
Hvilken opptakerport bør jeg bruke?
Enhver ubrukt lokal port fungerer. Port 8888 er vanlig, og nettleseren må bruke samme verdi.
Kan JMeter registrere HTTPS-trafikk?
Ja, når den isolerte testnettleseren stoler på JMeters midlertidige opptakssertifikat.
Hvorfor feiler et innspilt manus ved avspilling?
Dynamiske tokener, informasjonskapsler, autentiseringsflyter, vertsforskjeller og manglende data krever ofte korrelasjon og parameterisering.
Kan JMeter ta opp Chrome?
Ja. Konfigurer en ren Chrome-profil for å bruke JMeters lokale opptaker.
Bør jeg kjøre belastningstester fra JMeter GUI?
Nei. Bygg og feilsøk i GUI-modus, og utfør deretter lasting i ikke-GUI-modus.
Oppfører JMeter seg som en ekte nettleser?
Nei. Den sender protokollforespørsler, men gjengir ikke HTML eller kjører JavaScript i nettleseren.
Er det trygt å registrere en produksjonspålogging?
Foretrekker staging- og testkontoer. Produksjonsregistrering krever eksplisitt autorisasjon og streng hemmelig håndtering.
