A JMeter HTTP kérésminta-készítőket tud generálni úgy, hogy helyi rögzítő proxyként működik egy böngésző és egy engedélyezett célalkalmazás között. A jelenlegi verziók ezt a komponenst HTTP(S) tesztszkript-rögzítőnek nevezik. Egy böngészőút rögzítésére szolgál egy rögzítési vezérlőben, amely után a szkriptet meg kell tisztítani, korrelálni, validálni és protokoll szintű tesztként kell végrehajtani.
Mi az a JMeter HTTP proxy szerver?
A felvevő általában egy helyi porton figyeli a 8888Egy böngésző HTTP és HTTPS kéréseket küld az adott proxynak, és a JMeter a megfelelő forgalmat mintavételezőkké alakítja egy kiválasztott vezérlő alatt. Visszajátszás közben a JMeter közvetlenül küldi a kéréseket; nem indít böngészőt minden virtuális felhasználóhoz.
Miért érdemes felvételt készíteni a szkript kézi megépítése helyett?
- Valósághű kéréssorrendet, átirányításokat, űrlapokat és háttér API-kat rögzít.
- Feltárja az XHR vagy fetch hívásokat, amelyeket könnyű figyelmen kívül hagyni.
- Gyors alapot hoz létre egy összetett felhasználói folyamathoz.
- Csökkenti az átírási hibákat a fejlécekben és a paraméterekben.
A kézi szerkesztés egyszerűbb marad egy kis, dokumentált API esetében. A rögzítés akkor segít, ha a böngésző hálózati viselkedése még nem teljesen ismert. A terminológiát lásd a proxy típusok útmutatónkban.
Hogyan rögzítsünk egy szkriptet a JMeter 5.x-ben
- Indítsa el a JMetert grafikus módban szkriptek létrehozásához.
- Adjon hozzá egy szálcsoportot a tesztelési tervhez.
- Adjon hozzá egy felvételvezérlőt a Szálcsoport alatt.
- Adjon hozzá HTTP kérés alapértelmezéseket és egy HTTP sütikezelőt, ahol szükséges.
- Adja hozzá a HTTP(S) tesztszkript-rögzítőt, és válassza ki a Felvételvezérlőt célként.
- Használjon beillesztési/kizárási mintákat a nem kapcsolódó forgalom korlátozására.
A hivatalos Apache JMeter felvételi útmutató a mérvadó verzióspecifikus referencia.
1. lépés) A HTTP Proxy szerver beállítása
8888, állítsd be a célvezérlőt, és kattints a Rajt.Konfigurálja a tesztböngészőt HTTP és HTTPS proxy hoszttal 127.0.0.1 és ugyanazt a portot. Ha a böngésző egy másik virtuális gépen vagy konténerben fut, a localhost erre a környezetre utal; használjon helyette egy jóváhagyott, elérhető privát címet.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Ne szűrj túl agresszívan az első menetben, mert egy alkalmazás API másik altartományt használhat. Rögzítsd egyszer, vizsgáld meg a gazdagépeket, majd finomítsd a mintákat.
2. lépés) Jegyezze fel tevékenységét
- Indítsa el a rögzítőt, és csak az ideiglenes tanúsítványában bízzon meg az izolált tesztböngészőben.
- Nyissa meg a hivatalos tesztkörnyezetet.
- Tegyen meg egy tiszta utat emberi sebességgel.
- A felvételt az utolsó üzleti intézkedés után azonnal le kell állítani.
- Állítsa vissza a böngésző normál proxybeállításait.
Nevezd át a mintavevőket üzleti tevékenység és csoportos kapcsolódó kérések alapján a Tranzakcióvezérlők alatt. Távolítsd el az analitikákat, hirdetéseket, böngészőfrissítéseket, chat widgeteket és a duplikált statikus erőforrásokat, kivéve, ha azok kifejezetten szerepelnek a hatókörben.
Minden mintavevőt ellenőrizni kell titkok szempontjából. A jelszavaknak védett futásidejű adatokból kell származniuk, míg a tokenek módosításához korreláció szükséges.
3. lépés) Futtassa le a teszttervét
Egy felhasználó és egy iteráció validálása a betöltés hozzáadása előtt. Ideiglenesen használja az Eredményfa megjelenítését, ellenőrizze az átirányításokat és a válaszok törzsét, és adjon hozzá állításokat a várt üzleti eredményhez. A HTTP 200 önmagában nem bizonyítja a sikeres bejelentkezést vagy kijelentkezést.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Hibakeresés után távolítsd el a nehéz figyelőket, és futtasd a nem grafikus felületet:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
A jelentéskönyvtárnak újnak vagy üresnek kell lennie. Növelje a terhelést fokozatosan, és figyelje a célrendszert és a JMetert is.
4. lépés) Mentse el a teszt eredményét
Mentse el az újrafelhasználható tervet egy .jmx fájlba, és a létrehozott adatokat külön tárolja:
- JMX: mintavevők, vezérlők, állítások, időzítők, változók és konfiguráció.
- JTL: nyers mintaeredmények elemzéshez.
- HTML irányítópult: percentilisek, átviteli sebesség, hibák és aktív szálak.
- Szerver mutatók: CPU, memória, adatbázis, várólista és szolgáltatás telemetria.
Verziózd a tervet nem titkos tulajdonságokkal és tesztadatokkal. Rögzítsd a JMeter és Java verziókat, a cél buildet, a környezetet, a felhasználók számát, a felfutást és az időtartamot.
HTTPS forgalom és tanúsítványok rögzítése
HTTPS esetén a JMeter ideiglenes tanúsítványkibocsátó hatóságot generál a rögzítő indításakor. Importálja ezt a dedikált tesztböngészőbe, rögzítse a jogosult webhelyet, majd távolítsa el.
- Indítsa el a HTTP(S) tesztszkript-rögzítőt.
- Keresse meg a létrehozott ApacheJMeterTemporaryRootCA tanúsítványt.
- Importálja megbízható hatóságként az elkülönített profilba.
- Rögzítse a jóváhagyott HTTPS folyamatot.
- Ha kész, távolítsa el a tanúsítványt.
A tanúsítványok kitűzése, a kölcsönös TLS, a felügyelt böngészők, a mobilalkalmazások és az újabb átviteli protokollok blokkolhatják az elfogást. Ne gyengítse az éles környezet biztonsági ellenőrzéseit. Használjon átmeneti buildet, API-specifikációt vagy jóváhagyott alternatív rögzítési módszert.
Összefüggés: Felvett szkript újrajátszhatóvá tétele
A munkamenet-azonosítók, a CSRF-tokenek, az OAuth-állapot, a kérésaláírások és az erőforrás-azonosítók változnak a futtatások között. A korreláció egy friss értéket nyer ki az egyik válaszból, és behelyettesíti azt a későbbi kérésekbe.
- Keresse meg azt a választ, amelyik először tartalmazza a dinamikus értéket.
- Adjon hozzá egy JSON, CSS, XPath vagy reguláris kifejezés-kinyerőt.
- Tárold az eredményt egy elnevezett JMeter változóban.
- A későbbi fixen kódolt értékeket cserélje le a változóhivatkozásra.
- Egyértelműen kudarcot vall, ha a kinyerés nem ad egyezést.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
A paraméterezés független felhasználói adatokat szolgáltat, gyakran CSV-ből. A korreláció a végrehajtás során rögzíti a szerver által generált adatokat. A reális tervekhez általában mindkettőre szükség van.
Hibaelhárítás
| Probléma | Valószínű oka | Rögzít |
|---|---|---|
| Nincsenek rögzített kérések | Hibás proxy, leállított rögzítő, portütközés vagy megkerülési szabály | Erősítse meg a gazdagépet és a portot, indítsa el a rögzítőt, és távolítsa el a célpontok kizárásait. |
| HTTPS-figyelmeztetés | Ideiglenes CA hiányzik vagy lejárt | Generáljon új rögzítőtanúsítványt, és importálja azt a tesztprofilba. |
| Túl nagy forgalom | Bővítmények, telemetria, egyéb lapok vagy általános minták | Használj tiszta profilt, és finomítsd a belefoglalási/kizárási szűrőket. |
| Bejelentkezés visszajátszása sikertelen | Hiányzó sütik, tokenek, OAuth folyamat vagy korreláció | Sütikezelő hozzáadása, dinamikus értékek kinyerése és átirányítások vizsgálata. |
| Böngészés offline módban utána | Még mindig a leállított helyi proxyra mutat | Állítsa vissza az automatikus vagy a proxy nélküli beállításokat. |
| JMeter memóriahiba | GUI-figyelők vagy nagyméretű választároló | Használjon nem grafikus módot és korlátozza a mentett válaszadatokat. |
| Eltér a böngészőtől | A JMeter nem jeleníti meg vagy nem hajtja végre az oldal JavaScript kódját. | Teszteld az alapul szolgáló API-kat, és használj böngészőeszközöket a metrikák rendereléséhez. |
A JMeter egy protokollteljesítmény-mérő eszköz. Önmagában nem képes olyan vizuális eseményeket mérni, mint a legnagyobb tartalomkitöltés.
GYIK
Mi váltotta fel a HTTP Proxy Server nevét a JMeterben?
A komponens neve mostantól HTTP(S) Test Script Recorder.
Melyik felvevő portot használjam?
Bármely nem használt helyi port működik. A 8888-as port gyakori, és a böngészőnek ugyanazt az értéket kell használnia.
Rögzítheti a JMeter a HTTPS forgalmat?
Igen, amikor az elszigetelt tesztböngésző megbízik a JMeter ideiglenes rögzítési tanúsítványában.
Miért nem sikerül visszajátszáskor egy felvett forgatókönyv?
A dinamikus tokenek, sütik, hitelesítési folyamatok, gazdagép-különbségek és hiányzó adatok gyakran korrelációt és paraméterezést igényelnek.
A JMeter rögzítheti a Chrome-ot?
Igen. Konfiguráljon egy tiszta Chrome-profilt a JMeter helyi rögzítőjének használatához.
Futtassak terheléses teszteket a JMeter grafikus felhasználói felületéről?
Nem. Grafikus módban kell fordítani és hibakeresni, majd nem grafikus módban betöltést végrehajtani.
Úgy viselkedik a JMeter, mint egy igazi böngésző?
Nem. Protokollkéréseket küld, de nem jeleníti meg a HTML-t, és nem hajt végre böngésző JavaScriptet.
Biztonságos rögzíteni egy éles bejelentkezést?
Előnyben részesítjük a tesztelésre és a tesztelésre szolgáló fiókokat. Az éles környezetbe történő rögzítéshez explicit engedélyezés és szigorú titkosítás szükséges.
