HTTP proxy server v JMeter: Záznam příkladu skriptu

⚡ Chytré shrnutí

JMeter HTTP proxy server zaznamenává aktivitu prohlížeče do opakovaně použitelného testovacího skriptu. Záznamník se nachází mezi prohlížečem a webovou stránkou, zachycuje každý požadavek do řadiče záznamu a uložený plán je přehráván mnoha virtuálními uživateli.

  • 🎬 Hlavní účel: Proxy server sleduje a zaznamenává aktivitu uživatelů, zatímco běžný prohlížeč prochází testovanou aplikací.
  • 🧱 Kostra plánu: Skupina vláken, výchozí hodnoty HTTP požadavků a řadič nahrávání se vytvoří před zahájením nahrávání.
  • 🎯 Target Ovladač: Toto nastavení určuje, kam se zachycené vzorky zapisují ve stromu testovacího plánu.
  • 🌐 Nastavení prohlížeče: Prohlížeč musí nasměrovat svůj HTTP proxy na JMeter port, standardně 8888.
  • 🔐 HTTPS záznam: Importovat ApacheJMeterSoubor TemporaryRootCA.crt označte jako důvěryhodnou autoritu a poté jej odstraňte.
  • 🧹 Vyčistěte skript: Žádosti o reklamu a analýzu jsou také zaznamenávány a měly by být vyloučeny nebo smazány.
  • 🔗 Korelace před škálováním: Nahraďte zaznamenané tokeny relace tokeny extracproměnné, nebo se přehrání nezdaří.
  • ⚠️ Poznámka k verzi: WorkBench byl odstraněn v roce JMeter 5.0; element je nyní Záznamník testovacích skriptů HTTP(S).

JMeter Skript záznamu HTTP proxy serveru

Co je JMeter HTTP proxy server?

Jedno JMeter HTTP Proxy Server je vestavěný záznamník, který se nachází mezi prohlížečem a testovanou webovou stránkou. Sleduje a zaznamenává aktivitu uživatelů během běžného prohlížení aplikace a v rámci testovacího plánu převádí každý zachycený požadavek na vzorkovač HTTP požadavků. JMeter 3.0 byl prvek pojmenován Záznamník testovacích skriptů HTTP(S)a oba názvy popisují stejnou součást.

Záznam Testování pomáhá testerovi zaznamenávat a přehrávat aktivitu s testovacím cílem. Jedná se o typ automatizovaného testování, ale pro více uživatelů najednou.

Proč nahrávat scénář, místo aby ho psali ručně?

Realistická uživatelská cesta na moderním webu produkuje desítky požadavků, z nichž každý má své vlastní záhlaví, soubory cookie a parametry formuláře.ping Ruční vkládání všech těchto dat do samplerů je pomalé a náchylné k chybám. Nahrávání zachycuje přesně ten provoz, který prohlížeč odeslal, což má tři výhody:

  • Přesnost: Pořadí záhlaví, soubory cookie a skrytá pole formuláře jsou zaznamenávány přesně tak, jak je server obdržel.
  • Rychlost: Zaznamenání desetistránkové cesty trvá několik minut a ruční psaní celé hodiny.
  • Krytí: Volání AJAX na pozadí, která jsou v rozhraní neviditelná, se v nahrávce stále zobrazují.

Záznam je spíše výchozím bodem než hotovým testem. Před použitím je stále třeba jej vyčistit, korelovat a parametrizovat. zátěžové testováníNíže uvedené části pokrývají celou cestu od prázdného JMeter okno do skriptu, který se spolehlivě přehrává.

Zde je plán tohoto praktického příkladu

HTTP proxy server v JMeter

Jak nahrát skript v JMeter 5.x

Aktuální vydání je Apache JMeter 5.6.3, publikované 9. ledna 2024, a vyžaduje Java 8 nebo novější, s Java 17 doporučeno. Kdokoli, kdo bude postupovat podle ilustrovaného návodu dále na této stránce k dané verzi, nenajde uzel WorkBench, protože byl ve verzi 5.0 odstraněn. Funkce nezmizela, ale přesunula se. Záznamník je nyní přidán přímo do testovacího plánu a nazývá se Záznamník testovacích skriptů HTTP(S).

Nejrychlejší cesta je pomocí přiložené šablony. Vyberte Soubor > Šablony > Záznam a JMeter generuje kompletní plán obsahující skupinu vláken, výchozí hodnoty HTTP požadavků, řadič nahrávání a samotný rekordér, které jsou již propojeny. Ruční sestavení stejné struktury zahrnuje následující kroky.

  1. Sestavte kostru plánu. Přidejte skupinu vláken a poté pod ni přidejte ovladač nahrávání. Zde se budou zobrazovat zachycené samplery.
  2. Přidejte záznamník do testovacího plánu. Klikněte pravým tlačítkem myši na uzel Testovací plán a vyberte přidat > Netestovací prvky > Záznamník testovacích skriptů HTTP(S)Je to sourozenec skupiny vláken, nikoli dítě.
  3. Nastavte port. Výchozí hodnota je 8888. Funguje jakýkoli volný port, pokud je prohlížeč nakonfigurován tak, aby odpovídal.
  4. Vyberte Target Regulátor. Vyberte řadič nahrávání vytvořený v prvním kroku, aby se požadavky seskupily tam, kde očekáváte, a ne rozptýlily se v kořenovém adresáři plánu.
  5. přidat URL vzory vyloučení. Na kartě Filtrování požadavků vyloučte statické zdroje pomocí vzoru, například .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Tím se odstraní většina ručního čištění popsaného později.
  6. Spusťte rekordér. klikněte Home v horní části panelu rekordéru. JMeter píše ApacheJMeterSoubor TemporaryRootCA.crt v tuto chvíli uložte do složky bin, což umožňuje nahrávání HTTPS.
  7. Namiřte prohlížeč na proxy server pomocí localhost a zvoleného portu a poté se v aplikaci normálně pohybujte.
  8. Zastavte se a ukliďte. Stiskněte Stop, smažte všechny zbývající hovory od třetích stran a uložte tarif.
  9. Před škálováním ověřte. Klikněte pravým tlačítkem myši na skupinu vláken a vyberte potvrditToto spustí plán jednou s jedním vláknem, takže selhání se projeví předtím, než je aplikováno jakékoli zatížení.

Ještě jeden zvyk odlišuje funkční skript od spolehlivého. Grafické rozhraní používejte pouze pro sestavování a ladění a skutečný test spusťte z příkazového řádku pomocí jmeter -n -t plan.jmx -l results.jtl -e -o report, který také generuje HTML dashboard. Stejný příkaz je základem distribuované testování přes několik generátorů zátěže. Instalace je popsána v JMeter průvodce instalacía celý postup je zdokumentován na Apache JMeter stránka rekordéru.

⚠️ Poznámka k verzi: Snímky obrazovky v níže uvedeném návodu byly pořízeny na starším zařízení. JMeter verze, která stále obsahovala uzel WorkBench. WorkBench byl odstraněn v roce JMeter 5.0. Všechny koncepty stále platí; mění se pouze umístění záznamníku a aktuální postup je ten, který je uveden výše.

Krok 1) Nastavení HTTP proxy serveru

Toto je krok za krokem průvodce nastavením proxy

  1. Home JMeter
  2. vybrat Testovací plán na stromě
  3. přidat Skupina vlákenKlikněte pravým tlačítkem myši na Testovací plán a přidat novou skupinu vláken: přidat > Vlákna (uživatelé) > Skupina vláken

Nastavení HTTP proxy serveru

  1. přidat HTTP požadavekVyberte skupinu vláken; klikněte pravým tlačítkem myši přidat > Konfigurační prvek > Výchozí nastavení požadavku HTTP

Nastavení HTTP proxy serveru

V novém prvku Výchozí nastavení požadavku HTTP: Do pole Název serveru nebo IP zadejte „google.com“. Ostatní pole byste měli nechat prázdná

Nastavení HTTP proxy serveru

  1. přidat Ovladač nahráváníKlikněte pravým tlačítkem myši na „Skupinu vláken“ a přidejte řadič nahrávání: přidat > Logický ovladač > Ovladač nahrávání

Nastavení HTTP proxy serveru

  1. přidat Proxy server do WorkBenchu. Klikněte pravým tlačítkem myši na Workbench a přidejte http proxy: přidat > Netestovací prvky > HTTP proxy server, Na JMeter 5.x, klikněte pravým tlačítkem myši na Testovací plán uzel místo toho a zvolte Záznamník testovacích skriptů HTTP(S).

Nastavení HTTP proxy serveru

  1. sada Target kontrolor kam budou přidány vaše nahrané skripty

Nastavení HTTP proxy serveru

  1. Home Proxy server. Vraťte se na HTTP Proxy server a klikněte na Home tlačítko ve spodní části. Nyní vaše JMeter spuštění proxy serveru

Nastavení HTTP proxy serveru

  1. Spusťte prohlížeč (použil jsem Firefox), Vybrat Nástroj > Volba > pokročilý > Síť > nastavení > Zadejte HTTP proxy, jak je uvedeno na obrázku níže. V aktuálním Firefox uvolní stejný dialog, je dosaženo prostřednictvím Nastavení > obecně > Nastavení sítě.

Nastavení HTTP proxy serveru

Krok 2) Zaznamenejte svou aktivitu

  1. Nyní spustit http://www.google.com ve vašem webovém prohlížeči (JMeter stále otevřeno)
  2. Vyhledávejte aktivity klíčové slovo „guru99".
  3. Zpět na JMeter, v HTTP Proxy Server klepněte na Stop po dokončení

Záznam aktivity

  1. Po dokončení nahrávání uvidíte JMeter automaticky vytvořil nový požadavek HTTP jako na obrázku níže

Záznam aktivity

JMeter již zaznamenal požadavek uživatele na domovskou stránku of Google webová stránka. http://www.google.com/

Ostatní HTTP požadavky zobrazené na výše uvedeném obrázku, měli byste je odstranit. Protože někdy JMeter také zaznamenává některé reklamní odkazy, když vyhledáváte klíčová slova na GoogleV našem testovacím plánu bychom je měli ignorovat.

  1. Klikněte na Soubor > Uložit testovací plán jako

Záznam aktivity

  1. Zobrazí se dialogové okno > do pole Název souboru zadejte název testovacího plánu > klikněte na Uložit. Váš testovací plán je nyní uložen pod názvem RecordingTestPlan.jmx.

Záznam aktivity

Krok 3) Spusťte svůj testovací plán

  1. vybrat Skupina vláken > Přidat > Posluchač > Souhrnná zpráva

Spusťte testovací plán

  1. Souhrnná zpráva zobrazí některé základní statiky

Spusťte testovací plán

  1. Vyberte skupinu vláken a zadejte informace jako na obrázku níže

Spusťte testovací plán

Můžete se odvolat na článek JMeter Testování výkonu dozvědět se podrobnosti o konfiguraci skupiny vláken.

  1. Před spuštěním testu vyberte možnost „Souhrnná zpráva“. Až budete připraveni spustit test, vyberte Spustit > Start (Ctrl+R). JMeter přehraje vaši aktivitu 100krát. Během testu se statistiky budou měnit, dokud nebude test dokončen.

Spusťte testovací plán

Krok 4) Uložte výsledek testu

  1. klikněte Uložit data tabulky pro uložení výsledku testu do souboru

Uložit výsledek testu

  1. Zadejte název výsledku testu a klikněte na Uložit. Výsledek testu v JMeter je standardně uložen ve formátu *.csv

Uložit výsledek testu

Stáhněte si testovací plán nahrávání souborů

Stáhněte soubor HTTP proxy server

Zaznamenávání HTTPS provozu a certifikátů

Téměř každý web nyní používá HTTPS, což je starší verze původního návodu. Proxy server nemůže číst šifrovaný provoz, pokud mu prohlížeč nedůvěřuje, takže je nutný jeden krok navíc.

Když se spustí diktafon, JMeter generuje dočasný kořenový certifikát s názvem ApacheJMeterTemporaryRootCA.crt v jeho adresáři bin. Importujte tento soubor do prohlížeče jako důvěryhodnou certifikační autoritu a poté restartujte prohlížeč. JMeter nyní může pro každou stránku prezentovat vlastní certifikát a dešifrovat relaci pro nahrávání.

Za znát stojí tři body:

  • Platnost certifikátu vyprší po sedmi dnech. Tohle je úmyslné. Smažte to a nechte to JMeter regenerovat nový, spíše než prodlužovat jeho platnost.
  • Po dokončení jej odstraňte. Ponechání důvěryhodného kořenového certifikátu nainstalovaného na funkčním počítači představuje skutečné bezpečnostní riziko, nikoli teoretické.
  • Některé aplikace to odmítají. Weby používající pinning certifikátů nebo vzájemné TLS nelze vůbec zaznamenávat přes proxy a skript je nutné místo toho vytvořit ručně z nástrojů pro vývojáře prohlížeče.

Korelace: Jak přehrát nahraný scénář

Nahraný skript reprodukuje přesně to, co se stalo jednou, což se podruhé stává jen zřídka. Identifikátory relací, tokeny a vygenerované klíče zachycené během nahrávání jsou v době, kdy je skript znovu přehrán, nefunkční a spuštění selže způsobem, který vypadá jako chyba aplikace.

Korelace je řešení. A postprocesor například regulární výraz Extractor nebo JSON ExtracTor zachytí čerstvou hodnotu z přihlašovací odpovědi, uloží ji do proměnné a pozdější požadavky odkazují na tuto proměnnou místo zaznamenaného literálu.

Pracovní postup je krátký:

  1. Přehrajte skript jednou s posluchačem View Results Tree a najděte první neúspěšný požadavek.
  2. Porovnejte neúspěšný požadavek se záznamem. Jakákoli hodnota, která se mezi dvěma spuštěními liší, musí být korelována.
  3. Přidat bývalého/bývaloutractor k odpovědi, která vygenerovala hodnotu, a poté nahraďte pevně zakódovaný literál odkazem na proměnnou.
  4. Přidat komentář tvrzení takže stránka vracející HTTP 200 s chybovou zprávou stále neprojde testem.

Teprve po korelaci je bezpečné škálovat skript. Spuštění nekorelovaného záznamu u stovky uživatelů měří spíše zpracování chyb než výkonDalší prvky jsou zahrnuty v celém JMeter tutoriály.

Odstraňování poruch

Pokud se při spuštění výše uvedeného scénáře setkáte s problémem, postupujte takto:

  1. Zkontrolujte, zda se připojujete k internetu přes proxy. Pokud ano, odeberte proxy.
  2. Otevřete novou instanci JMeter.
  3. Otevřete soubor RecordingTestPlan.jmx v JMeter.
  4. Klikněte pravým tlačítkem myši na Workbench > Merge > Vyberte HTTP Proxy Server.jmx. Zapnuto JMeter 5.x, sloučit do uzlu Test Plan, protože WorkBench již neexistuje.
  5. Klikněte na Skupina vláken > Souhrnná zpráva.
  6. Spusťte test.

Dva další příznaky jsou zodpovědné za většinu zbývajících selhání. Pokud prohlížeč hlásí, že se nemůže připojit, rekordér nebyl nikdy spuštěn nebo port nastavený v prohlížeči neodpovídá portu nastavenému v JMeterPokud se stránky načítají normálně, ale ve stromové struktuře se nic nezobrazuje, jde o HTTPS provoz a certifikát nebyl importován.

Nejčastější dotazy

Bylo to odstraněno v roce JMeter 5.0. Netestovací prvky, jako například Záznamník testovacích skriptů HTTP(S), jsou nyní přidány přímo pod uzel Testovací plán.

přidat URL vzory, které chcete vyloučit, na kartě Filtrování požadavků v záznamníku. Vzor pokrývající běžné statické přípony souborů odstraňuje většinu šumu dříve, než se dostane do skriptu.

Umělá inteligence klasifikuje nahrané samplery na obchodní kroky a šum třetích stran, poté navrhuje, které kroky smazat a které hodnoty je třeba korelovat, čímž rychleji přeměňuje nezpracovaný záznam na použitelný skript.

Ano. Na základě těla odpovědi a hodnoty, kterou má umělá inteligence zachytit, vytvoří regulární výraz nebo hraniční pár. Ověřte to v zobrazení stromu výsledků, protože vzor se může shodovat v jedné odpovědi a v jiné ne.

Prohlížeč nedůvěřuje JMeter proxy. Importovat ApacheJMeterSoubor TemporaryRootCA.crt z JMeter složku bin jako důvěryhodnou autoritu, restartujte prohlížeč a znovu proveďte záznam.

Ano. Nastavte proxy Wi-Fi zařízení na IP adresu a port nahrávacího zařízení a poté nainstalujte JMeter certifikát na zařízení. Aplikace, které používají připnutí certifikátu, stále nelze zaznamenat.

Ne. Grafické rozhraní slouží k sestavování a ladění. Samotný test spusťte v režimu příkazového řádku, který spotřebuje mnohem méně paměti a na konci vygeneruje HTML zprávu.

Testovací plány se ukládají jako .jmx, což je formát XML, který dobře funguje ve správě verzí. Výsledky se zapisují jako .jtl, což je standardně CSV a lze je také uložit jako XML.

Shrňte tento příspěvek takto: