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.

Test kun systemer du eier eller er eksplisitt autorisert til å vurdere. Opptak kan inneholde passord, informasjonskapsler, tokener og personopplysninger. Foretrekk staging-kontoer, fjern hemmeligheter før du deler JMX-filer, og respekter godkjente lastegrenser.

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

  1. Start JMeter i GUI-modus for å opprette skript.
  2. Legg til en trådgruppe i testplanen.
  3. Legg til en opptakskontroller under trådgruppen.
  4. Legg til standardinnstillinger for HTTP-forespørsler og en HTTP-informasjonskapselbehandler der det er aktuelt.
  5. Legg til HTTP(S) Test Script Recorder og velg Recording Controller som mål.
  6. Bruk inkluderings-/ekskluderingsmønstre for å begrense urelatert trafikk.

Den offisielle Apache JMeter-opptaksveiledningen er den autoritative versjonsspesifikke referansen.

Bruk en ren nettleserprofil: utvidelser, synkronisering, telemetri og urelaterte faner skaper støyende forespørsler.

Trinn 1) Angi HTTP Proxy-serveren

Opptaker: velg en ubrukt lokal port, for eksempel 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

  1. Start opptakeren og stol bare på det midlertidige sertifikatet i den isolerte testnettleseren.
  2. Åpne det autoriserte testmiljøet.
  3. Utfør én ren reise i menneskelig hastighet.
  4. Stopp opptaket umiddelbart etter den siste forretningshandlingen.
  5. 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.

Ikke kjør alvorlig belastning fra det grafiske brukergrensesnittet. GUI-lyttere bruker minne og kan forvrenge resultatene.

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.

  1. Start HTTP(S)-testskriptopptakeren.
  2. Finn det genererte ApacheJMeterTemporaryRootCA-sertifikatet.
  3. Importer den som en klarert autoritet i den isolerte profilen.
  4. Registrer den godkjente HTTPS-reisen.
  5. 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.

  1. Finn svaret som først inneholder den dynamiske verdien.
  2. Legg til en JSON-, CSS-, XPath- eller regulæruttrykksuttrekker.
  3. Lagre resultatet i en navngitt JMeter-variabel.
  4. Erstatt senere hardkodede verdier med variabelreferansen.
  5. 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

ProblemSannsynlig årsakFix
Ingen forespørsler registrertFeil proxy, stoppet opptaker, portkonflikt eller omgåelsesregelBekreft vert og port, start opptakeren og fjern målutelatelser.
HTTPS-advarselMidlertidig CA mangler eller er utløptGenerer et nytt opptakersertifikat og importer det kun til testprofilen.
For mye trafikkUtvidelser, telemetri, andre faner eller generelle mønstreBruk en ren profil og finjuster inkluderings-/ekskluderingsfiltre.
Avspilling av pålogging mislykkesManglende informasjonskapsler, tokener, OAuth-flyt eller korrelasjonLegg til Cookie Manager, trekk ut dynamiske verdier og inspiser omdirigeringer.
Nettleseren er frakoblet etterpåDen peker fortsatt på den stoppede lokale proxyenGjenopprett automatiske innstillinger eller innstillinger uten proxy.
JMeter-minnefeilGUI-lyttere eller stor responslagringBruk ikke-GUI-modus og begrens lagrede svardata.
Forskjellig fra nettleserJMeter gjengir eller kjører ikke JavaScript for siderTest 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.