JMeter dokáže generovat vzorkovače HTTP požadavků tím, že funguje jako lokální proxy pro záznam mezi prohlížečem a autorizovanou cílovou aplikací. Aktuální verze tuto komponentu nazývají HTTP(S) Test Script Recorder . Zachycuje jednu cestu prohlížeče do řadiče záznamu, po kterém musí být skript vyčištěn, korelován, validován a spuštěn jako test na úrovni protokolu.
Co je to HTTP proxy server JMeter?
Rekordér naslouchá na lokálním portu, obvykle 8888Prohlížeč odesílá HTTP a HTTPS požadavky na danou proxy a JMeter převádí odpovídající provoz na samplery pod vybraným kontrolerem. Během přehrávání JMeter odesílá požadavky přímo; nespustí prohlížeč pro každého virtuálního uživatele.
Proč nahrávat scénář, místo aby ho psali ručně?
- Zachycuje realistické pořadí požadavků, přesměrování, formuláře a API na pozadí.
- Odhaluje XHR nebo fetch volání, která lze snadno přehlédnout.
- Vytvoří rychlou základnu pro komplexní cestu uživatele.
- Snižuje chyby v transkripci v záhlavích a parametrech.
Ruční konstrukce zůstává u malého zdokumentovaného API přehlednější. Zaznamenávání pomáhá, když chování prohlížeče v síti ještě není pochopeno. Terminologii naleznete v našem průvodci typy proxy.
Jak nahrát skript v JMeteru 5.x
- Spusťte JMeter v grafickém režimu pro vytvoření skriptu.
- Přidejte skupinu vláken do testovacího plánu.
- Přidejte řadič nahrávání do skupiny vláken.
- V případě potřeby přidejte výchozí hodnoty HTTP požadavků a správce HTTP cookie.
- Přidejte záznamník testovacích skriptů HTTP(S) a jako jeho cíl vyberte řadič záznamu.
- Použijte vzory zahrnutí/vyloučení k omezení nesouvisejícího provozu.
Oficiální průvodce nahráváním Apache JMeter je autoritativní referencí pro danou verzi.
Krok 1) Nastavení HTTP proxy serveru
8888, nastavte cílový ovladač a klikněte na Home.Nakonfigurujte testovací prohlížeč s proxy hostitelem HTTP a HTTPS 127.0.0.1 a stejný port. Pokud prohlížeč běží na jiném virtuálním počítači nebo kontejneru, localhost odkazuje na toto prostředí; použijte místo toho schválenou dosažitelnou privátní adresu.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Nefiltrujte při prvním průchodu příliš agresivně, protože aplikační API může používat jinou subdoménu. Zaznamenejte jednou, zkontrolujte hostitele a poté upřesněte vzory.
Krok 2) Zaznamenejte svou aktivitu
- Spusťte záznamník a důvěřujte jeho dočasnému certifikátu pouze v izolovaném testovacím prohlížeči.
- Otevřete autorizované testovací prostředí.
- Udělejte jednu čistou cestu lidskou rychlostí.
- Ihned po dokončení poslední obchodní akce ukončete nahrávání.
- Obnovte normální nastavení proxy serveru prohlížeče.
Přejmenujte vzorkovače podle obchodních akcí a seskupte požadavky související s nimi v části Transakční řadiče. Odeberte analytické nástroje, reklamy, aktualizace prohlížeče, widgety chatu a duplicitní statické zdroje, pokud nejsou explicitně v rozsahu.
Zkontrolujte každý sampler, zda neobsahuje tajné kódy. Hesla by měla pocházet z chráněných běhových dat, zatímco změna tokenů vyžaduje korelaci.
Krok 3) Spusťte svůj testovací plán
Před přidáním zátěže ověřte jednoho uživatele a jednu iteraci. Dočasně použijte View Results Tree, zkontrolujte přesměrování a těla odpovědí a přidejte aserce pro očekávaný obchodní výsledek. HTTP 200 sám o sobě nedokazuje, že přihlášení nebo odhlášení proběhlo úspěšně.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Po ladění odstraňte těžké posluchače a spusťte program bez GUI:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Adresář sestav musí být nový nebo prázdný. Postupně zvyšujte zátěž a sledujte cílový systém i JMeter.
Krok 4) Uložte výsledek testu
Uložte si plán pro opakované použití jako .jmx zařadit do souboru a uchovávat vygenerovaná data odděleně:
- JMX: vzorkovače, řadiče, assertace, časovače, proměnné a konfigurace.
- JTL: výsledky nezpracovaných vzorků pro analýzu.
- HTML dashboard: percentily, propustnost, chyby a aktivní vlákna.
- Metriky serveru: Telemetrie CPU, paměti, databáze, fronty a služeb.
Přidejte verze plánu s netajnými vlastnostmi a testovacími daty. Zaznamenejte verze JMeteru a Javy, cílové sestavení, prostředí, počet uživatelů, náběh a dobu trvání.
Zaznamenávání HTTPS provozu a certifikátů
Pro HTTPS generuje JMeter dočasnou certifikační autoritu při spuštění záznamníku. Importujte ji pouze do vyhrazeného testovacího prohlížeče, zaznamenejte autorizovanou stránku a poté ji odstraňte.
- Spusťte záznamník testovacích skriptů HTTP(S).
- Vyhledejte vygenerovaný certifikát ApacheJMeterTemporaryRootCA.
- Importujte jej jako důvěryhodnou autoritu v izolovaném profilu.
- Zaznamenejte schválenou cestu HTTPS.
- Po dokončení certifikát odeberte.
Zachycení může být blokováno pomocí pinování certifikátů, vzájemného TLS, spravovaných prohlížečů, mobilních aplikací a novějších transportních protokolů. Neoslabujte bezpečnostní kontroly v produkčním prostředí. Používejte testovací sestavení, specifikaci API nebo schválenou alternativní metodu zachycení.
Korelace: Jak přehrát nahraný scénář
ID relací, tokeny CSRF, stav OAuth, podpisy požadavků a ID zdrojů se mezi spuštěními mění. Korelace extrahuje novou hodnotu z jedné odpovědi a nahrazuje ji do pozdějších požadavků.
- Vyhledejte odpověď, která jako první obsahuje dynamickou hodnotu.
- Přidejte extraktor JSON, CSS, XPath nebo regulárních výrazů.
- Výsledek uložte do pojmenované proměnné JMeter.
- Nahraďte pozdější pevně zakódované hodnoty odkazem na proměnnou.
- Zjevně selže, když extrakce nevrátí žádnou shodu.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Parametrizace poskytuje nezávislá uživatelská data, často z CSV. Korelace zachycuje data generovaná serverem během provádění. Realistické plány obvykle potřebují obojí.
Odstraňování poruch
| Problém | Pravděpodobná příčina | Opravit |
|---|---|---|
| Žádné zaznamenané žádosti | Špatný proxy server, zastavený rekordér, konflikt portů nebo pravidlo obejití | Potvrďte hostitele a port, spusťte záznamník a odeberte vyloučení cílů. |
| Varování HTTPS | Dočasná certifikační autorita chybí nebo vypršela. | Vygenerujte nový certifikát záznamníku a importujte ho pouze do testovacího profilu. |
| Příliš mnoho provozu | Rozšíření, telemetrie, další karty nebo obecné vzorce | Použijte čistý profil a upřesněte filtry zahrnutí/vyloučení. |
| Opakované přihlášení selhalo | Chybějící soubory cookie, tokeny, tok OAuth nebo korelace | Přidejte Správce souborů cookie, extrahujte dynamické hodnoty a kontrolujte přesměrování. |
| Prohlížeč poté offline | Stále ukazuje na zastavenou lokální proxy. | Obnovte automatická nastavení nebo nastavení bez proxy. |
| Chyba paměti JMeteru | Posluchače GUI nebo velké úložiště odpovědí | Používejte režim bez grafického rozhraní a omezte ukládaná data odpovědí. |
| Liší se od prohlížeče | JMeter nevykresluje ani nespustí JavaScript stránky | Testujte základní API a používejte nástroje prohlížeče pro vykreslování metrik. |
JMeter je nástroj pro měření výkonu protokolu. Sám o sobě nedokáže měřit vizuální události, jako například největší obsahové vykreslení (Largest Contentful Paint).
Nejčastější dotazy
Co nahradilo název HTTP Proxy Serveru v JMeteru?
Komponenta se nyní nazývá HTTP(S) Test Script Recorder.
Jaký port rekordéru mám použít?
Funguje jakýkoli nepoužívaný lokální port. Port 8888 je běžný a prohlížeč musí použít stejnou hodnotu.
Může JMeter zaznamenávat HTTPS provoz?
Ano, když izolovaný testovací prohlížeč důvěřuje dočasnému certifikátu pro záznam JMeteru.
Proč se nahraný scénář při přehrávání nedaří?
Dynamické tokeny, soubory cookie, autentizační toky, rozdíly mezi hostiteli a chybějící data obvykle vyžadují korelaci a parametrizaci.
Může JMeter nahrávat Chrome?
Ano. Nakonfigurujte čistý profil Chromu pro použití lokálního záznamníku JMeteru.
Mám spouštět zátěžové testy z grafického rozhraní JMeteru?
Ne. Sestavte a laďte v grafickém režimu a poté spusťte načítání v režimu bez grafického rozhraní.
Chová se JMeter jako skutečný prohlížeč?
Ne. Odesílá požadavky protokolu, ale nevykresluje HTML ani nespustí JavaScript prohlížeče.
Je bezpečné zaznamenávat přihlašovací údaje do produkčního prostředí?
Preferujte testovací a pracovní účty. Produkční záznam vyžaduje explicitní autorizaci a přísné tajné zacházení.
