JMeter može generirati uzorke HTTP zahtjeva djelujući kao lokalni proxy za snimanje između preglednika i ovlaštene ciljne aplikacije. Trenutne verzije nazivaju ovu komponentu HTTP(S) Test Script Recorder . Snima jedno putovanje preglednika u kontroler snimanja, nakon čega se skripta mora očistiti, korelirati, validirati i izvršiti kao test na razini protokola.
Što je JMeter HTTP proxy poslužitelj?
Snimač obično sluša na lokalnom portu 8888Preglednik šalje HTTP i HTTPS zahtjeve tom proxyju, a JMeter pretvara odgovarajući promet u uzorke pod odabranim kontrolerom. Tijekom reprodukcije, JMeter šalje zahtjeve izravno; ne pokreće preglednik za svakog virtualnog korisnika.
Zašto snimati umjesto ručnog pisanja scenarija?
- Bilježi realističan redoslijed zahtjeva, preusmjeravanja, obrasce i pozadinske API-je.
- Otkriva XHR ili dohvatne pozive koje je lako previdjeti.
- Stvara brzu osnovu za složeno korisničko putovanje.
- Smanjuje pogreške u transkripciji u zaglavljima i parametrima.
Ručna konstrukcija ostaje čišća za mali dokumentirani API. Snimanje pomaže kada ponašanje mreže preglednika još nije razumljivo. Za terminologiju pogledajte naš vodič o vrstama proxyja.
Kako snimiti skriptu u JMeteru 5.x
- Pokrenite JMeter u GUI načinu rada za izradu skripte.
- Dodajte grupu niti u plan testiranja.
- Dodajte kontroler snimanja pod grupu niti.
- Dodajte zadane postavke HTTP zahtjeva i Upravitelj HTTP kolačića gdje je to prikladno.
- Dodajte HTTP(S) Test Script Recorder i odaberite Recording Controller kao njegov cilj.
- Koristite obrasce uključivanja/isključivanja kako biste ograničili nepovezani promet.
Službeni vodič za snimanje Apache JMetera je autoritativna referenca specifična za pojedinu verziju.
Korak 1) Postavljanje HTTP proxy poslužitelja
8888, postavite ciljni kontroler i kliknite Start.Konfigurirajte testni preglednik s HTTP i HTTPS proxy hostom 127.0.0.1 i isti port. Ako preglednik radi u drugom virtualnom računalu ili spremniku, localhost se odnosi na to okruženje; umjesto toga koristite odobrenu dostupnu privatnu adresu.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Nemojte previše agresivno filtrirati u prvom prolazu jer API aplikacije može koristiti drugu poddomenu. Snimite jednom, pregledajte hostove, a zatim pročistite uzorke.
Korak 2) Zabilježite svoju aktivnost
- Pokrenite snimač i vjerujte njegovom privremenom certifikatu samo u izoliranom testnom pregledniku.
- Otvorite ovlašteno testno okruženje.
- Obavi jedno čisto putovanje ljudskom brzinom.
- Odmah prekinite snimanje nakon završne poslovne radnje.
- Vratite normalne postavke proxyja preglednika.
Preimenuj uzorke prema poslovnim radnjama i grupnim zahtjevima u Kontrolerima transakcija. Ukloni analitiku, oglase, ažuriranja preglednika, widgete za chat i duplicirane statičke resurse osim ako nisu izričito u opsegu.
Pregledajte svaki uzorkivač za tajne podatke. Lozinke bi trebale dolaziti iz zaštićenih podataka o izvođenju, dok promjena tokena zahtijeva korelaciju.
Korak 3) Pokrenite svoj plan testiranja
Validirajte jednog korisnika i jednu iteraciju prije dodavanja opterećenja. Privremeno koristite View Results Tree, provjerite preusmjeravanja i tijela odgovora te dodajte tvrdnje za očekivani poslovni ishod. HTTP 200 sam po sebi ne dokazuje da je prijava ili odjava uspjela.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Nakon otklanjanja pogrešaka, uklonite teške slušače i pokrenite ne-GUI:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Direktorij izvješća mora biti nov ili prazan. Postupno povećavajte opterećenje i pratite ciljni sustav kao i JMeter.
Korak 4) Spremite rezultat testa
Spremi plan za višekratnu upotrebu kao .jmx datoteku i odvojeno čuvajte generirane podatke:
- JMX: uzorkovači, kontroleri, tvrdnje, tajmeri, varijable i konfiguracija.
- JTL: rezultati sirovih uzoraka za analizu.
- HTML nadzorna ploča: percentili, propusnost, pogreške i aktivne niti.
- Mjerni podaci poslužitelja: Telemetrija procesora, memorije, baze podataka, reda čekanja i servisa.
Verzirajte plan s netajnim svojstvima i testnim podacima. Zabilježite verzije JMetera i Jave, ciljnu verziju, okruženje, broj korisnika, povećanje i trajanje.
Snimanje HTTPS prometa i certifikata
Za HTTPS, JMeter generira privremeni certifikacijski autoritet kada se snimač pokrene. Uvezite ga samo u namjenski testni preglednik, zabilježite autoriziranu lokaciju, a zatim je uklonite.
- Pokrenite snimač HTTP(S) testnih skripti.
- Pronađite generirani ApacheJMeterTemporaryRootCA certifikat.
- Uvezite ga kao pouzdani autoritet u izolirani profil.
- Zabilježite odobreno HTTPS putovanje.
- Uklonite certifikat kada završite.
Prikvačivanje certifikata, međusobni TLS, upravljani preglednici, mobilne aplikacije i noviji transportni protokoli mogu blokirati presretanje. Nemojte slabiti sigurnosne kontrole produkcije. Koristite pripremnu verziju, API specifikaciju ili odobrenu alternativnu metodu snimanja.
Korelacija: Omogućavanje ponovne reprodukcije snimljenog scenarija
ID-ovi sesija, CSRF tokeni, OAuth stanje, potpisi zahtjeva i ID-ovi resursa mijenjaju se između izvršavanja. Korelacija izdvaja novu vrijednost iz jednog odgovora i zamjenjuje je u kasnije zahtjeve.
- Pronađite odgovor koji prvi sadrži dinamičku vrijednost.
- Dodajte JSON, CSS, XPath ili alat za izdvajanje regularnih izraza.
- Rezultat pohranite u imenovanu JMeter varijablu.
- Zamijenite kasnije čvrsto kodirane vrijednosti referencom varijable.
- Jasno je da ne uspijeva kada ekstrakcija ne vrati podudaranje.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Parametrizacija pruža neovisne korisničke podatke, često iz CSV-a. Korelacija bilježi podatke koje generira poslužitelj tijekom izvršavanja. Realistični planovi obično zahtijevaju oboje.
Rješavanje problema
| Problem | Vjerojatni uzrok | Popraviti |
|---|---|---|
| Nema zabilježenih zahtjeva | Pogrešan proxy, zaustavljeni snimač, sukob portova ili pravilo zaobilaženja | Potvrdite host i port, pokrenite snimač i uklonite izuzeća ciljeva. |
| HTTPS upozorenje | Privremeni CA nedostaje ili je istekao | Generirajte novi certifikat snimača i uvezite ga samo u testni profil. |
| Previše prometa | Proširenja, telemetrija, druge kartice ili široki obrasci | Koristite čist profil i pročistite filtere za uključivanje/isključivanje. |
| Ponovna prijava nije uspjela | Nedostaju kolačići, tokeni, OAuth tok ili korelacija | Dodajte Upravitelj kolačića, izdvojite dinamičke vrijednosti i pregledajte preusmjeravanja. |
| Preglednik nakon toga izvan mreže | I dalje pokazuje na zaustavljeni lokalni proxy | Vratite automatske postavke ili postavke bez proxyja. |
| Greška memorije JMetera | GUI slušači ili velika pohrana odgovora | Koristite način rada bez grafičkog korisničkog sučelja i ograničite spremljene podatke odgovora. |
| Razlikuje se od preglednika | JMeter ne prikazuje niti izvršava JavaScript stranice | Testirajte temeljne API-je i koristite alate preglednika za renderiranje metrika. |
JMeter je alat za mjerenje performansi protokola. Ne može sam mjeriti vizualne događaje poput najvećeg paint sadržaja.
Pitanja i odgovori
Što je zamijenilo naziv HTTP proxy servera u JMeteru?
Komponenta se sada zove HTTP(S) Test Script Recorder.
Koji port za snimanje trebam koristiti?
Radi bilo koji neiskorišteni lokalni port. Port 8888 je uobičajen i preglednik mora koristiti istu vrijednost.
Može li JMeter snimati HTTPS promet?
Da, kada izolirani testni preglednik vjeruje JMeterovom privremenom certifikatu za snimanje.
Zašto snimljeni scenarij ne uspijeva pri ponovnom reprodukciji?
Dinamički tokeni, kolačići, tokovi autentifikacije, razlike među hostovima i nedostajući podaci obično zahtijevaju korelaciju i parametrizaciju.
Može li JMeter snimati Chrome?
Da. Konfigurirajte čisti Chrome profil za korištenje JMeterovog lokalnog snimača.
Trebam li pokretati testove opterećenja iz JMeter GUI-ja?
Ne. Izgradi i ispravi greške u GUI načinu rada, a zatim izvrši učitavanje u ne-GUI načinu rada.
Ponaša li se JMeter kao pravi preglednik?
Ne. Šalje zahtjeve za protokolom, ali ne prikazuje HTML niti izvršava JavaScript u pregledniku.
Je li sigurno snimiti prijavu u produkciji?
Preferirajte pripremne i testne račune. Snimanje produkcije zahtijeva izričitu autorizaciju i strogo tajno rukovanje.
