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.

Csak olyan rendszereket teszteljen, amelyek a tulajdonában vannak, vagy amelyek értékelésére kifejezetten felhatalmazása van. A felvételek tartalmazhatnak jelszavakat, sütiket, tokeneket és személyes adatokat. Előnyben részesítse a staging fiókokat, távolítsa el a titkos kódokat a JMX fájlok megosztása előtt, és tartsa be a jóváhagyott betöltési korlátokat.

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

  1. Indítsa el a JMetert grafikus módban szkriptek létrehozásához.
  2. Adjon hozzá egy szálcsoportot a tesztelési tervhez.
  3. Adjon hozzá egy felvételvezérlőt a Szálcsoport alatt.
  4. Adjon hozzá HTTP kérés alapértelmezéseket és egy HTTP sütikezelőt, ahol szükséges.
  5. Adja hozzá a HTTP(S) tesztszkript-rögzítőt, és válassza ki a Felvételvezérlőt célként.
  6. 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.

Használjon tiszta böngészőprofilt: A bővítmények, a szinkronizálás, a telemetria és a nem kapcsolódó lapok zajos kéréseket hoznak létre.

1. lépés) A HTTP Proxy szerver beállítása

Recorder: válasszon egy nem használt helyi portot, például 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

  1. 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.
  2. Nyissa meg a hivatalos tesztkörnyezetet.
  3. Tegyen meg egy tiszta utat emberi sebességgel.
  4. A felvételt az utolsó üzleti intézkedés után azonnal le kell állítani.
  5. Á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.

Ne futtasson komoly terhelést a grafikus felhasználói felületről. A GUI-figyelők memóriát fogyasztanak, és torzíthatják az eredményeket.

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.

  1. Indítsa el a HTTP(S) tesztszkript-rögzítőt.
  2. Keresse meg a létrehozott ApacheJMeterTemporaryRootCA tanúsítványt.
  3. Importálja megbízható hatóságként az elkülönített profilba.
  4. Rögzítse a jóváhagyott HTTPS folyamatot.
  5. 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.

  1. Keresse meg azt a választ, amelyik először tartalmazza a dinamikus értéket.
  2. Adjon hozzá egy JSON, CSS, XPath vagy reguláris kifejezés-kinyerőt.
  3. Tárold az eredményt egy elnevezett JMeter változóban.
  4. A későbbi fixen kódolt értékeket cserélje le a változóhivatkozásra.
  5. 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émaValószínű okaRögzít
Nincsenek rögzített kérésekHibás proxy, leállított rögzítő, portütközés vagy megkerülési szabályErő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ésIdeiglenes CA hiányzik vagy lejártGeneráljon új rögzítőtanúsítványt, és importálja azt a tesztprofilba.
Túl nagy forgalomBővítmények, telemetria, egyéb lapok vagy általános mintákHasználj tiszta profilt, és finomítsd a belefoglalási/kizárási szűrőket.
Bejelentkezés visszajátszása sikertelenHiá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ánaMé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óriahibaGUI-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őlA 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.