HTTP-proxyserver i JMeter: Optag eksempel script

โšก Smart opsummering

JMeter HTTP-proxyserveren registrerer browseraktivitet i et genanvendeligt testscript. Optageren placeres mellem browser og websted, registrerer hver anmodning i en optagelsescontroller, og den gemte plan afspilles af mange virtuelle brugere.

  • ๐ŸŽฌ Kerneformรฅl: Proxyen overvรฅger og registrerer brugeraktivitet, mens en normal browser navigerer i den applikation, der testes.
  • ๐Ÿงฑ Planskelet: Trรฅdgruppe, HTTP-anmodningsstandarder og optagelsescontroller oprettes, fรธr optagelsen starter.
  • ๐ŸŽฏ Target controller: Denne indstilling bestemmer, hvor optagne samplere skrives i testplantrรฆet.
  • ๐ŸŒ Browseropsรฆtning: Browseren skal pege sin HTTP-proxy mod JMeter port, 8888 som standard.
  • ๐Ÿ” HTTPS-optagelse: Importรฉr ApacheJMeterTemporaryRootCA.crt som en betroet autoritet, og fjern den derefter.
  • ๐Ÿงน Rengรธr scriptet: Anmodninger om annoncering og analyse registreres ogsรฅ og bรธr udelukkes eller slettes.
  • ๐Ÿ”— Korrelรฉr fรธr skalering: Erstat optagede sessionstokens med f.eks.tracted variabler, ellers mislykkes afspilningen.
  • โš ๏ธ Versionsnote: WorkBench blev fjernet i JMeter 5.0; elementet er nu HTTP(S) Test Script Recorder.

JMeter HTTP Proxy Server-postskript

Hvad er det JMeter HTTP-proxyserver?

JMeter HTTP Proxy Server er en indbygget optager, der placeres mellem browseren og det websted, der testes. Den overvรฅger og registrerer brugeraktivitet, mens applikationen browser normalt, og omdanner hver registreret anmodning til en HTTP-forespรธrgselssampler i testplanen. JMeter 3.0 elementet har fรฅet navnet HTTP(S) testscriptoptager, og begge navne beskriver den samme komponent.

Optage test hjรฆlper en tester med at optage og afspille aktivitet mod et testmรฅl. Det er en type automatiseret testning, men for flere brugere pรฅ รฉn gang.

Hvorfor optage i stedet for at bygge manuskriptet i hรฅnden?

En realistisk brugerrejse pรฅ et moderne websted producerer snesevis af anmodninger, hver med sine egne headere, cookies og formularparametre. Typing Alt dette manuelt indarbejdes i samplere, hvilket er langsomt og fejlbehรฆftet. Optagelsen registrerer den prรฆcise trafik, som browseren sendte, hvilket giver tre fordele:

  • Nรธjagtighed: Headerrรฆkkefรธlge, cookies og skjulte formularfelter registreres prรฆcis, som serveren modtog dem.
  • Hastighed: En rejse pรฅ ti sider tager minutter at registrere og timer at skrive manuelt.
  • Dรฆkning: AJAX-kald i baggrunden, der er usynlige i brugerfladen, vises stadig i optagelsen.

Optagelsen er et udgangspunkt snarere end en fรฆrdig test. Den skal stadig renses, korreleres og parametriseres, fรธr den kan bruges til belastningstestAfsnittene nedenfor dรฆkker hele stien fra en tom JMeter vindue til et script, der afspilles pรฅlideligt.

Her er den kรธreplan af dette praktiske eksempel

HTTP-proxyserver i JMeter

Sรฅdan optager du et script i JMeter 5.x

Den nuvรฆrende udgivelse er Apache JMeter 5.6.3, offentliggjort den 9. januar 2024, og det krรฆver Java 8 eller senere, med Java 17 anbefales. Enhver, der fรธlger den illustrerede gennemgang lรฆngere nede pรฅ denne side om den udgivelse, vil ikke finde en WorkBench-node, fordi den blev fjernet i version 5.0. Funktionaliteten forsvandt ikke; den blev flyttet. Optageren er nu tilfรธjet direkte til testplanen og kaldes HTTP(S) Test Script Recorder.

Den hurtigste rute er den medfรธlgende skabelon. Vรฆlg File (Felt) > Skabeloner > Indspilning og JMeter genererer en komplet plan, der indeholder en trรฅdgruppe, HTTP-anmodningsstandarder, en optagelsescontroller og selve optageren, som allerede er forbundet. Opbygning af den samme struktur i hรฅnden sker pรฅ fรธlgende mรฅde.

  1. Byg planskelettet. Tilfรธj en trรฅdgruppe, og tilfรธj derefter en optagelsescontroller under den. Det er her, optagede samplere lander.
  2. Tilfรธj optageren til testplanen. Hรธjreklik pรฅ noden Testplan, og vรฆlg Tilfรธj > Ikke-testelementer > HTTP(S) testscriptoptagerDet er en sรธskende af trรฅdgruppen, ikke en undergruppe.
  3. Indstil porten. Standardindstillingen er 8888. Enhver ledig port fungerer, forudsat at browseren er konfigureret til at matche.
  4. Vรฆlg den Target Controller. Vรฆlg den optagelsescontroller, der blev oprettet i trin et, sรฅ anmodninger grupperes, hvor du forventer, i stedet for spredt ved planroden.
  5. Tilfรธj URL udelukkelsesmรธnstre. Pรฅ fanen Anmodningsfiltrering skal du ekskludere statiske ressourcer med et mรธnster som f.eks. .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Dette fjerner det meste af den manuelle oprydning, der beskrives senere.
  6. Start optageren. Klik Starten รธverst pรฅ optagerpanelet. JMeter skriver ApacheJMeterTemporaryRootCA.crt i sin bin-mappe pรฅ nuvรฆrende tidspunkt, hvilket gรธr HTTPS-optagelse mulig.
  7. Ret browseren mod proxyen ved hjรฆlp af localhost og den valgte port, og naviger derefter normalt i applikationen.
  8. Stop op og rydd op. Tryk pรฅ Stop, slet eventuelle resterende tredjepartsopkald, og gem planen.
  9. Valider fรธr skalering. Hรธjreklik pรฅ trรฅdgruppen og vรฆlg GodkendDette kรธrer planen รฉn gang med en enkelt trรฅd, sรฅ fejl opstรฅr, fรธr der pรฅfรธres nogen belastning.

Endnu en vane adskiller et fungerende script fra et pรฅlideligt. Brug kun den grafiske brugerflade til opbygning og fejlfinding, og kรธr derefter den rigtige test fra kommandolinjen med jmeter -n -t plan.jmx -l resultater.jtl -e -o rapport, som ogsรฅ genererer et HTML-dashboard. Den samme kommando er grundlaget for distribueret testning pรฅ tvรฆrs af flere lastgeneratorer. Installationen er dรฆkket i JMeter installationsvejledning, og den fulde procedure er dokumenteret pรฅ Apache JMeter optagerside.

โš ๏ธ Versionsnotat: Skรฆrmbillederne i gennemgangen nedenfor blev optaget pรฅ en รฆldre JMeter udgivelse, der stadig havde WorkBench-noden. WorkBench blev fjernet i JMeter 5.0. Alle koncepter gรฆlder stadig; kun placeringen af โ€‹โ€‹optageren รฆndres, og den nuvรฆrende procedure er den, der er angivet ovenfor.

Trin 1) Indstilling af HTTP Proxy-serveren

Dette er en trin-for-trin guide til opsรฆtning af proxy

  1. Starten JMeter
  2. Type Testplan pรฅ trรฆet
  3. Tilfรธj TrรฅdgruppeHรธjreklik pรฅ Testplan og tilfรธj en ny trรฅdgruppe: Tilfรธj > Trรฅde (brugere) > Trรฅdgruppe

Indstilling af HTTP-proxyserveren

  1. Tilfรธj HTTP-anmodningVรฆlg trรฅdgruppen; hรธjreklik Tilfรธj > Konfigurationselement > HTTP-anmodningsstandarder

Indstilling af HTTP-proxyserveren

I det nye HTTP Request Defaults-element: Indtast "google.com" i Servernavn eller IP. Du skal holde de andre felter tomme

Indstilling af HTTP-proxyserveren

  1. Tilfรธj OptagelsescontrollerHรธjreklik pรฅ "Trรฅdgruppe" og tilfรธj en optagelsescontroller: Tilfรธj > Logisk controller > Optagelsescontroller

Indstilling af HTTP-proxyserveren

  1. Tilfรธj proxy-server til WorkBench. Hรธjreklik pรฅ Workbench og tilfรธj http-proxyen: Tilfรธj > Ikke-testelementer > HTTP-proxyserver. Pรฅ JMeter 5.x, hรธjreklik pรฅ Testplan node i stedet og vรฆlg HTTP(S) testscriptoptager.

Indstilling af HTTP-proxyserveren

  1. sรฆt Target controller hvor dine optagede scripts vil blive tilfรธjet

Indstilling af HTTP-proxyserveren

  1. Starten Proxyserver. Gรฅ tilbage til HTTP-proxyserver, og klik pรฅ Starten knappen i bunden. Nu din JMeter proxy server start

Indstilling af HTTP-proxyserveren

  1. Start din browser (jeg brugte Firefox), vรฆlg Vรฆrktรธj > Option > Avanceret > Netvรฆrk > Lokal omrรฅde > Indtast HTTP-proxy som vist nedenfor. I nuvรฆrende Firefox frigiver den samme dialog nรฅs gennem Indstillinger > Generelt > Netvรฆrksindstillinger.

Indstilling af HTTP-proxyserveren

Trin 2) Registrer din aktivitet

  1. Start nu http://www.google.com i din webbrowser (JMeter stadig รฅben)
  2. Sรธger aktiviteter efter sรธgeordet "guru 99".
  3. Back to JMeter, i HTTP Proxy Server, klik Stands nรฅr fรฆrdig

Optag aktivitet

  1. Nรฅr du er fรฆrdig med at optage, vil du se JMeter oprettede automatisk en ny HTTP-anmodning som vist i figuren nedenfor

Optag aktivitet

JMeter har allerede registreret en brugeranmodning til Hjemmesiden of Google internet side. http://www.google.com/

De andre HTTP-anmodninger vises i ovenstรฅende figur, du bรธr fjerne dem. Fordi engang JMeter registrerer ogsรฅ nogle reklamelinks, mens du sรธger efter sรธgeord pรฅ GoogleVi bรธr ignorere dem i vores testplan.

  1. Klik pรฅ Filer > Gem din testplan som

Optag aktivitet

  1. Der vises en dialogboks > indtast et navn pรฅ din testplan i feltet Filnavn > klik pรฅ Gem. Nu er din testplan gemt under navnet RecordingTestPlan.jmx

Optag aktivitet

Trin 3) Kรธr din testplan

  1. Type Trรฅdgruppe > Tilfรธj > Lytter > Oversigtsrapport

Kรธr testplan

  1. Den sammenfattende rapport vil vise nogle grundlรฆggende statik

Kรธr testplan

  1. Vรฆlg trรฅdgruppe, indtast oplysninger som figuren nedenfor

Kรธr testplan

Du kan henvise til artiklen JMeter Test af ydeevne for at fรฅ flere oplysninger om konfiguration af trรฅdgrupper.

  1. Fรธr du starter testen, skal du vรฆlge "Oversigtsrapport". Nรฅr du er klar til at kรธre en test, skal du vรฆlge Kรธr > Start (Ctrl+R). JMeter vil afspille din aktivitet 100 gange. Statistikken vil รฆndre sig, mens testen kรธrer, indtil den er fรฆrdig.

Kรธr testplan

Trin 4) Gem dit testresultat

  1. Klik Gem tabeldata for at gemme testresultatet i filen

Gem testresultat

  1. Indtast navnet pรฅ testresultatet, og klik pรฅ Gem. Testresultat i JMeter gemmes i *.csv-format som standard

Gem testresultat

Download filoptagelsestestplanen

Download filen HTTP-proxyserver

Optagelse af HTTPS-trafik og -certifikater

Nรฆsten alle websteder bruger nu HTTPS, hvilket den oprindelige gennemgang er รฆldre end. En proxy kan ikke lรฆse krypteret trafik, medmindre browseren har tillid til den, sรฅ et ekstra trin er pรฅkrรฆvet.

Nรฅr optageren starter, JMeter genererer et midlertidigt rodcertifikat med navnet ApacheJMeterMidlertidigRootCA.crt i dens bin-mappe. Importer filen til browseren som en betroet certifikatmyndighed, og genstart derefter browseren. JMeter kan nu prรฆsentere sit eget certifikat for hvert websted og dekryptere sessionen til optagelse.

Tre punkter er vรฆrd at vide:

  • Certifikatet udlรธber efter syv dage. Dette er bevidst. Slet det og lad det JMeter regenerere en frisk i stedet for at forlรฆnge gyldigheden.
  • Fjern den, nรฅr du er fรฆrdig. At lade et betroet rodcertifikat vรฆre installeret pรฅ en fungerende maskine er en reel sikkerhedsrisiko, ikke en teoretisk en.
  • Nogle applikationer afviser det. Websteder, der bruger certifikatfastgรธrelse eller gensidig TLS, kan slet ikke optages via en proxy, og scriptet skal i stedet bygges manuelt fra browserudviklervรฆrktรธjer.

Korrelation: Gรธr et optaget manuskript genafspilbart

Et optaget script gengiver prรฆcis, hvad der skete รฉn gang, hvilket sjรฆldent sker anden gang. Sessionsidentifikatorer, tokens og genererede nรธgler, der registreres under optagelse, er dรธde vรฆrdier, nรฅr scriptet afspilles igen, og kรธrslen fejler pรฅ mรฅder, der ligner programfejl.

Korrelation er lรธsningen. efterbehandlingsenhed sรฅsom det regulรฆre udtryk f.eks.tractor eller JSON Extractor indfanger den nye vรฆrdi fra login-svaret, gemmer den i en variabel og refererer senere til den variabel i stedet for den optagede literal.

Arbejdsgangen er kort:

  1. Afspil scriptet รฉn gang igen med en View Results Tree-lytter, og find den fรธrste mislykkede anmodning.
  2. Sammenlign den fejlende anmodning med optagelsen. Enhver vรฆrdi, der afviger mellem to kรธrsler, skal korreleres.
  3. Tilfรธj en ekstractor til det svar, der producerede vรฆrdien, og erstat derefter den hardkodede literal med den variable reference.
  4. Tilfรธj en pรฅstand sรฅ en side, der returnerer HTTP 200 med en fejlmeddelelse, dumper stadig testen.

Fรธrst efter korrelation er det sikkert at skalere scriptet op. Kรธrsel af en ukorreleret optagelse pรฅ hundrede brugere mรฅler fejlhรฅndtering snarere end ydeevneYderligere elementer er dรฆkket pรฅ tvรฆrs af JMeter tutorials.

Fejlfinding

Hvis du stรธder pรฅ et problem under udfรธrelsen af โ€‹โ€‹ovenstรฅende scenarie, skal du gรธre fรธlgende:

  1. Kontroller, om du opretter forbindelse til internettet via en proxy. Hvis ja, fjern proxyen.
  2. ร…bn en ny forekomst af JMeter.
  3. ร…bn RecordingTestPlan.jmx i JMeter.
  4. Hรธjreklik pรฅ Workbench > Merge > Vรฆlg HTTP Proxy Server.jmx. Til JMeter 5.x, flettes i stedet ind i Testplan-noden, da WorkBench ikke lรฆngere findes.
  5. Klik pรฅ Trรฅdgruppe > Oversigtsrapport.
  6. Kรธr testen.

To yderligere symptomer forklarer de fleste resterende fejl. Hvis browseren rapporterer, at den ikke kan oprette forbindelse, blev optageren aldrig startet, eller den port, der er angivet i browseren, stemmer ikke overens med den port, der er angivet i JMeterHvis siderne indlรฆses normalt, men der ikke vises noget i trรฆet, er trafikken HTTPS, og certifikatet er ikke blevet importeret.

Ofte Stillede Spรธrgsmรฅl

Den blev fjernet i JMeter 5.0. Ikke-testelementer sรฅsom HTTP(S) Test Script Recorder tilfรธjes nu direkte under Testplan-noden i stedet.

Tilfรธj URL mรธnstre, der skal udelades, pรฅ fanen Anmodningsfiltrering i optageren. Et mรธnster, der dรฆkker almindelige statiske filtypenavne, fjerner det meste af stรธjen, fรธr den nรฅr scriptet.

AI klassificerer optagede samplere i forretningstrin og tredjepartsstรธj og foreslรฅr derefter, hvilke der skal slettes, og hvilke vรฆrdier der skal korreleres, hvilket hurtigere omdanner en rรฅ optagelse til et brugbart script.

Ja. Givet svarets brรธdtekst og den vรฆrdi, der skal registreres, udarbejder AI et regulรฆrt udtryk eller et grรฆnsepar. Bekrรฆft det i Vis resultattrรฆ, da et mรธnster kan matche i รฉt svar og ikke i et andet.

Browseren har ikke tillid til JMeter proxy. Importer ApacheJMeterTemporaryRootCA.crt fra JMeter bin-mappen som en betroet autoritet, genstart browseren og optag igen.

Ja. Indstil enhedens Wi-Fi-proxy til optagemaskinens IP-adresse og port, og installer derefter JMeter certifikat pรฅ enheden. Applikationer, der bruger certifikatfastgรธrelse, kan stadig ikke optages.

Nej. Den grafiske brugerflade er til opbygning og fejlfinding. Kรธr selve testen i kommandolinjetilstand, hvilket bruger langt mindre hukommelse og producerer en HTML-rapport til sidst.

Testplaner gemmes som .jmx, et XML-format, der fungerer godt i versionskontrol. Resultater skrives som .jtl, som som standard er CSV og ogsรฅ kan gemmes som XML.

Opsummer dette indlรฆg med: