Procesor v JMeter: Preprocesor a postprocesor

โšก Chytrรฉ shrnutรญ

Procesor v JMeter upravuje poลพadavky Sampleru pล™ed nebo po provedenรญ. PreProcessor pล™ipravuje data poลพadavku, zatรญmco PostProcessor extracts hodnotรญ a ล™รญdรญ tok testลฏ, coลพ umoลพลˆuje korelaci, dynamickou parametrizaci a spolehlivรฉ chovรกnรญ pล™i testovรกnรญ vรฝkonu.

  • โš™๏ธ Zรกkladnรญ definice: Procesor upravuje Sampler uvnitล™ svรฉho rozsahu a provรกdรญ ho buฤ pล™ed poลพadavkem, nebo po odpovฤ›di.
  • ๐Ÿ” Role pล™edprocesoru: Preprocesory nastavujรญ promฤ›nnรฉ a pล™episujรญ je URLs, analyzovat HTML odkazy a aplikovat uลพivatelskรฉ parametry pล™ed spuลกtฤ›nรญm Sampleru.
  • ๐Ÿ“ค Role postprocesoru: Postprocesory ฤtou odpovฤ›di, napล™.tracdynamickรฉ hodnoty do promฤ›nnรฝch a rozhodnout, zda probรญhajรญcรญ test pokraฤuje.
  • ๐Ÿงฉ ExtracVรฝbฤ›r tor: Regulรกrnรญ vรฝrazy, hranice, JSON, CSS/jQuery a XPath extracKaลพdรฝ z torลฏ vyhovuje jinรฉmu formรกtu odpovฤ›di.
  • ๐Ÿ›‘ ล˜รญzenรญ toku: Obsluลพnรก rutina Akce Stavu Vรฝsledku zastavรญ jedno vlรกkno nebo celรฝ test, kdyลพ selลพe Sampler.
  • ๐Ÿงช Pouลพitรฝ nรกvod: ล est krokลฏ pro vytvoล™enรญ plรกnu, kterรฝ se automaticky zastavรญ, jakmile neplatnรก cesta vrรกtรญ chybu serveru.

Procesor v JMeter

Procesor v Apache JMeter je prvek testovacรญho plรกnu, kterรฝ upravuje vzorkovaฤe v rรกmci svรฉho rozsahu. Spouลกtรญ se automaticky, buฤ tฤ›snฤ› pล™ed odeslรกnรญm poลพadavku JMeter nebo ihned po pล™รญchodu odpovฤ›di, coลพ z nฤ›j ฤinรญ hlavnรญ mechanismus pro zpracovรกnรญ dynamickรฝch dat bฤ›hem zkouลกka vรฝkonu.

Existujรญ 2 typy procesorลฏ:

  1. Pล™edprocesor
  2. Post-procesor

Rozsah urฤuje, jak daleko procesor dosรกhne. Procesor umรญstฤ›nรฝ pล™รญmo pod Testovacรญ plรกn Nebo se skupina vlรกken vztahuje na kaลพdรฝ pod nรญ umรญstฤ›nรฝ sampler, zatรญmco procesor vnoล™enรฝ uvnitล™ jednoho sampleru ovlivลˆuje pouze danรฝ poลพadavek. Pochopenรญ tohoto pravidla zabraลˆuje chybรกm v konfiguraci popsanรฝm v ฤรกsti o ล™eลกenรญ problรฉmลฏ na tรฉto strรกnce.

Pล™edprocesor

Pre-procesor provede nฤ›jakou akci pล™ed vytvoล™enรญ poลพadavku vzornรญku.

Zvaลพte jednoduchรฝ pล™รญklad: ล™eknฤ›me, ลพe jste chtฤ›li JMeter โ€žprochรกzetโ€œ testovanรฝm webem, analyzovat odkaz (zkontrolujte vลกechny odkazy na strรกnce) a zpรกteฤnรญ HTML. Pล™ed vytvoล™enรญm poลพadavku HTTP byste do svรฉho ล™adiฤe pล™idali nฤ›jakou akci, jako je โ€žHTML link parserโ€œ.

Pล™edprocesor

Vรฝลกe uvedenรฝ diagram znรกzorลˆuje preprocesor, kterรฝ se nachรกzรญ mezi ล™adiฤem a odchozรญm poลพadavkem. Protoลพe bฤ›ลพรญ jako prvnรญ, je to sprรกvnรฉ mรญsto pro sestavenรญ dat poลพadavku: generovรกnรญ ฤasovรฉho razรญtka, ฤtenรญ hodnoty ze sloupce CSV, pล™episovรกnรญ identifikรกtoru relace do URLnebo pล™iล™azenรญ rลฏznรฝch pล™ihlaลกovacรญch รบdajลฏ kaลพdรฉmu virtuรกlnรญmu uลพivateli.

Post-procesor

Post-procesor provede nฤ›jakou akci po provedenรญ poลพadavku Sampler.

Zvaลพte jednoduchรฝ pล™รญklad: JMeter odeลกle HTTP poลพadavek na testovanรฝ webovรฝ server (atd www.google.com) a zรญskejte odpovฤ›ฤ. Ty chceลก JMeter zastavit test, pokud je odpovฤ›ฤ serveru chyba. Postprocesor mลฏลพete k provedenรญ vรฝลกe uvedenรฉho รบkolu pouลพรญt nรกsledovnฤ›:

Post-procesor

Jak ukazuje druhรฝ diagram, postprocesor pล™eฤte odpovฤ›ฤ po dokonฤenรญ vzorkovรกnรญ. Toto je takรฉ standardnรญ odpovฤ›ฤ na korelaci. Kdyลพ server vrรกtรญ token, ID relace nebo ฤรญslo objednรกvky, kterรฉ se mฤ›nรญ pล™i kaลพdรฉm spuลกtฤ›nรญ, postprocesor tuto hodnotu zachytรญ do JMeter promฤ›nnou, aby ji dalลกรญ sampler mohl znovu pouลพรญt.

Typy preprocesorลฏ v JMeter

Apache JMeter Dodรกvรก se s kompaktnรญ sadou preprocesorลฏ. Kaลพdรฝ z nich pล™ipravuje vzorkovaฤ jinรฝm zpลฏsobem, takลพe vรฝbฤ›r sprรกvnรฉho prvku zajistรญ ฤitelnost a snadnou รบdrลพbu testovacรญho plรกnu.

  • ฤŒasovรฝ limit vzorku: Definuje maximรกlnรญ dobu trvรกnรญ poลพadavku. Jakรฝkoli vzorkovaฤ, kterรฝ bฤ›ลพรญ dรฉle neลพ nakonfigurovanรก hodnota, je oznaฤen jako neรบspฤ›ลกnรฝ.
  • Uลพivatelskรฉ parametry: Pล™iล™azuje specifickรฉ hodnoty promฤ›nnรฝm pro kaลพdรฉho virtuรกlnรญho uลพivatele, takลพe kaลพdรฉ vlรกkno odesรญlรก svou vlastnรญ datovou sadu.
  • Analyzรกtor odkazลฏ HTML: Prohledรก testovanou strรกnku, analyzuje nalezenรฉ odkazy a odeลกle je do nรกsledujรญcรญho HTTP poลพadavku.
  • HTTP URL Modifikรกtor pล™episovรกnรญ: Vloลพรญ identifikรกtor relace do URL pro aplikace, kterรฉ track relacรญ bez souborลฏ cookie.
  • Uลพivatelskรฉ parametry regulรกrnรญho vรฝrazu: Naplnรญ parametry poลพadavku pomocรญ hodnot zachycenรฝch regulรกrnรญm vรฝrazem z dล™รญvฤ›jลกรญ odpovฤ›di.
  • Preprocesor JDBC: Spustรญ SQL pล™รญkaz pล™ed Samplerem, coลพ je uลพiteฤnรฉ pro osazenรญ nebo resetovรกnรญ databรกzovรฝch zรกznamลฏ.
  • Pล™edprocesor JSR223: Provede Groovy or Java skript pro libovolnou vlastnรญ logiku pล™รญpravy. Nahrazuje starลกรญ BeanShell PreProcessor a pล™i zรกtฤ›ลพi dosahuje vรฝraznฤ› lepลกรญch vรฝsledkลฏ.

๐Ÿ’ก Tip: Preferujte pล™edprocesor JSR223 s Groovy jazyk nad BeanShellem. Groovy Skripty jsou kompilovรกny a uklรกdรกny do mezipamฤ›ti, takลพe spotล™ebovรกvajรญ mnohem mรฉnฤ› CPU, kdyลพ tisรญce vlรกken bฤ›ลพรญ paralelnฤ›.

Typy postprocesorลฏ v JMeter

Postprocesory se dฤ›lรญ do dvou skupin: napล™.tractory, kterรฉ z odpovฤ›di vytahujรญ hodnoty, a obsluลพnรฉ rutiny, kterรฉ reagujรญ na vรฝsledek vzorkovaฤe. Nรญลพe uvedenรก tabulka mapuje kaลพdรฝ prvek na formรกt odpovฤ›di, kterรฝ mu nejlรฉpe vyhovuje.

Postprocesor Nejvhodnฤ›jลกรญ pro Typickรฉ pouลพitรญ
Regulรกrnรญ vรฝraz ExtracTor Jakรกkoli textovรก odpovฤ›ฤ Zachycenรญ tokenลฏ nebo ID z HTML a prostรฉho textu
Hraniฤnรญ ExtracTor Jakรกkoli textovรก odpovฤ›ฤ Zachycenรญ hodnoty pomocรญ levรฉ a pravรฉ hranice namรญsto plnรฉho regulรกrnรญho vรฝrazu
JSON ExtracTor JSON odpovฤ›di ฤŒtenรญ polรญ z datovรฝch ฤรกstรญ REST bฤ›hem API testovรกnรญ
CSS/jQuery ExtracTor HTML odpovฤ›di Vรฝbฤ›r elementu pomocรญ CSS selektoru
XPath ExtracTor Odpovฤ›di XML a XHTML Navigace ve strukturovanรฉm stromu dokumentลฏ
Postprocesor JDBC Vรฝsledky databรกze Ovฤ›ล™ovรกnรญ nebo ฤiลกtฤ›nรญ ล™รกdkลฏ po poลพadavku
Postprocesor JSR223 Jakรกkoli odpovฤ›ฤ Vlastnรญ skriptovanรฉ parsovรกnรญ a aserce
Ovladaฤ akce stavu vรฝsledku Jakรกkoli odpovฤ›ฤ Stopping vlรกkno nebo celรฝ test, kdyลพ Sampler selลพe

Hraniฤnรญ extracTor dorazil do JMeter 4.0 a je ฤasto nejrychlejลกรญ moลพnostรญ pro zรกpis, protoลพe se ptรก pouze na text bezprostล™ednฤ› vlevo a vpravo od hodnoty. Regulรกrnรญ vรฝraz ExtracTor zลฏstรกvรก flexibilnฤ›jลกรญ volbou, kdyลพ se okolnรญ znaฤenรญ mezi odpovฤ›ฤmi liลกรญ.

Rozdรญl mezi preprocesorem a postprocesorem

Oba prvky sdรญlejรญ stejnรก pravidla pro rozsah, ale ล™eลกรญ opaฤnรฉ problรฉmy. Nรญลพe uvedenรฉ srovnรกnรญ shrnuje rozdรญl pล™ed zpracovanรฝm pล™รญkladem.

Parametr Pล™edprocesor Postprocesor
Doba provedenรญ Spustรญ se pล™edtรญm, neลพ Sampler odeลกle svลฏj poลพadavek. Spustรญ se potรฉ, co Sampler obdrลพรญ odpovฤ›ฤ.
Primรกrnรญ รบฤel Pล™ipravuje a upravuje data ลพรกdosti ฤŒte data odpovฤ›di a reaguje na nฤ›
Typickรฉ prvky Uลพivatelskรฉ parametry, analyzรกtor odkazลฏ HTML, preprocesor JSR223 Regulรกrnรญ vรฝraz Extractor, JSON Extractor, Obsluha akcรญ stavu vรฝsledku
Vliv na tok Nelze zastavit test, pouze upravuje poลพadavek. Mลฏลพe zastavit vlรกkno nebo celรฝ testovacรญ bฤ›h
Spoleฤnรฝ cรญl Parametrizace Korelace a zpracovรกnรญ chyb

V praxi fungujรญ oba jako pรกr. PostProcessor zachytรญ token relace z pล™ihlaลกovacรญ odpovฤ›di a PreProcessor v dalลกรญm poลพadavku tento token vloลพรญ pล™ed odeslรกnรญm volรกnรญ. Nรกsledujรญcรญ pล™รญklad demonstruje polovinu tohoto vzoru, kterรก je souฤรกstรญ PostProcessoru.

Pล™รญklad postprocesoru

Tento tutoriรกl vรกm ukรกลพe podrobnรฉ pokyny, jak pouลพรญvat Post-processor v JMeter. Zaฤnฤ›me jednoduchรฝm testovacรญm skriptem.

  1. JMeter odeลกle HTTP poลพadavek na testovanรฝ webovรฝ server www.google.com.
  2. JMeter dostane odpovฤ›ฤ od Google serveru.
  3. Pokud je odpovฤ›ฤ serveru chyba, JMeter vลฏle zastavit test.
  4. Pokud odpovฤ›ฤ serveru OK (ลพรกdnรก chyba), JMeter vลฏle pokraฤovat test.

Zde je plรกn tohoto pล™รญkladu:

Pล™รญklad postprocesoru

Pล™edpoklad:

We opฤ›tovnรฉ pouลพitรญ Krok 1 a Krok 2 v ฤlรกnku JMeter Testovรกnรญ vรฝkonu. Jestliลพe JMeter jeลกtฤ› nenรญ nainstalovรกn, postupujte podle JMeter prลฏvodce instalacรญ .

Krok 1) Pล™idejte skupinu vlรกken

Kliknฤ›te pravรฝm tlaฤรญtkem na Testovacรญ plรกn a pล™idat novou skupinu vlรกken: pล™idat -> Vlรกkna (uลพivatelรฉ) -> Skupina vlรกken

Ale v ovlรกdacรญm panelu Skupina vlรกken zadejte Vlastnosti vlรกkna nรกsledovnฤ›:

Pล™idat skupinu vlรกken

Toto nastavenรญ umoลพลˆuje JMeter vytvoล™it 10 poลพadavek uลพivatele http://www.google.com 10 krรกt.

Krok 2) Pล™idejte JMeter prvky

  • Pล™idat vรฝchozรญ poลพadavek HTTP
  • Pล™idat poลพadavek HTTP

Stรกle vyrรกbรญme JMeter poslat ลพรกdost http://www.google.com na Google serveru.

Krok 3) Pล™idejte prvek postprocesoru

Kliknฤ›te pravรฝm tlaฤรญtkem myลกi Skupina vlรกken -> pล™idat -> Postprocesor -> Ovladaฤ akce stavu vรฝsledku

Ovladaฤ akce stavu vรฝsledku umoลพลˆuje uลพivateli zastavit vlรกkno nebo celรฝ test, pokud poลพadavek uลพivatele selhal.

Pล™idat prvek postprocesoru

V podoknฤ› popisovaฤ akcรญ stavu vรฝsledkลฏ vyberte Zastavte test. Tato volba zastavรญ test, pokud JMeter zรญskat chybu z odpovฤ›di serveru.

Pล™idat prvek postprocesoru

Krok 4) Nakonfigurujte poลพadavek HTTP

Otevล™ete panel poลพadavkลฏ HTTP. Vstupte "abc" do pole Cesta.

Nakonfigurujte poลพadavek HTTP

Kdyลพ vstoupรญte "abc" na cestu, JMeter vytvoล™รญ URL poลพadavek na Google server: http://www.google.com/abc. Tento URL neexistuje na Google server. Je to ลกpatnฤ› URL ลพรกdost o to Google server vrรกtรญ chybu.

Krok 5) Pล™idejte strom vรฝsledkลฏ zobrazenรญ

Kliknฤ›te pravรฝm tlaฤรญtkem myลกi Skupina vlรกken -> pล™idat -> Posluchaฤ -> Zobrazit strom vรฝsledkลฏ

Pล™idat strom vรฝsledkลฏ zobrazenรญ

Krok 6) Spusลฅte test

Vyberte Zobrazit strom vรฝsledkลฏ a stisknฤ›te tlaฤรญtko Spustit na liลกtฤ› nabรญdek. Uvidรญte chyba odpovฤ›ฤ od Google server a test se zastavรญ bez dokonฤenรญ 100 vlรกken.

Spusลฅte test

Nynรญ se vraลฅte ke kroku 4, otevล™ete podokno HTTP Request, zadejte โ€žkalendรกล™โ€œ do panelu. Dฤ›lรก JMeter vytvoล™it URL poลพรกdat https://calendar.google.com/calendar/u/0/r k Google server. Toto je opravit URL ลพรกdost o to Google Server vrรกtรญ OK (ลพรกdnรก chyba).

Spusลฅte test

Vyberte Zobrazit strom vรฝsledkลฏ a stisknฤ›te tlaฤรญtko Spustit na liลกtฤ› nabรญdek. Uvidรญte OK odpovฤ›ฤ od Google server a test bude pokraฤovat, dokud nebude dokonฤeno vลกech 100 vlรกken.

Spusลฅte test

Pล™idรกnรญ tvrzenรญ Spolu s obsluลพnou rutinou akce stavu vรฝsledku je kontrola pล™รญsnฤ›jลกรญ, protoลพe asserce mลฏลพe selhat u vzorkovaฤe, kterรฝ vrรกtil HTTP 200, ale doruฤil nesprรกvnรฝ obsah.

Odstraลˆovรกnรญ poruch

Pokud se pล™i spuลกtฤ›nรญ vรฝลกe uvedenรฉho scรฉnรกล™e setkรกte s problรฉmem... proveฤte nรกsledujรญcรญ:

  1. Zkontrolujte, zda se pล™ipojujete k internetu pล™es proxy. Pokud ano, odeberte proxy.
  2. Otevล™ete novou instanci Jmeter
  3. Otevล™ete ProcessorTestPlan.jmx v Jmetru
  4. Double-kliknฤ›te na skupinu vlรกken -> Zobrazit strom vรฝsledkลฏ
  5. Spusลฅte test

Pokud se zdรก, ลพe postprocesor nedฤ›lรก nic, nejprve zkontrolujte jeho pozici. Postprocesor umรญstฤ›nรฝ mimo rozsah sampleru, na kterรฝ cรญlรญ, se nikdy nespustรญ, coลพ je nejฤastฤ›jลกรญ pล™รญฤina prรกzdnรฉho ex.tracpromฤ›nnรก ted. Souvisejรญcรญ prvky, jako napล™รญklad regulรกtory a distribuovanรฉ testovรกnรญ ล™รญdit se stejnou logikou rozsahu.

Nejฤastฤ›jลกรญ dotazy

Preprocesor mฤ›nรญ obsah poลพadavku pล™ed jeho odeslรกnรญm. ฤŒasovaฤ pozastavรญ vlรกkno pouze na definovanรฝ interval. Oba bฤ›ลพรญ pล™ed samplerem, ale ฤasovaฤ nikdy neupravuje data poลพadavku.

Bรฝvalรฝ/รกtractor uklรกdรก hodnotu do JMeter nรกzev promฤ›nnรฉ, kterรฝ definujete. Jakรฝkoli pozdฤ›jลกรญ Sampler ve stejnรฉm vlรกknฤ› na nฤ›j odkazuje pomocรญ syntaxe ${variableName}, a to v cestฤ›, zรกhlavรญ nebo tฤ›le poลพadavku.

Ano. Nฤ›kolik asistentลฏ umฤ›lรฉ inteligence nynรญ pล™eฤte zaznamenanou odpovฤ›ฤ a navrhne regulรกrnรญ vรฝraz nebo hraniฤnรญ pรกr pro korelaci. Nรกvrh je stรกle tล™eba pล™ezkoumat, protoลพe umฤ›lรก inteligence nedokรกลพe rozpoznat, kterรฉ hodnoty jsou skuteฤnฤ› dynamickรฉ.

Ano. Asistenti s umฤ›lou inteligencรญ porovnรกvajรญ nezpracovanou odpovฤ›ฤ s pล™edchozรญtracvรฝraz tor a upozornฤ›nรญ na neshody v escaping, skupinapingnebo rozsah. Pล™ed dลฏvฤ›ล™ovรกnรญm opravฤ› pล™i spuลกtฤ›nรญ naฤรญtรกnรญ ovฤ›ล™te opravu v zobrazenรญ stromu vรฝsledkลฏ.

Procesory bฤ›ลพรญ jednou pro kaลพdรฉ spuลกtฤ›nรญ Sampleru v rรกmci jejich rozsahu. S deseti vlรกkny looping pฤ›tkrรกt, procesor pล™ipojenรฝ k tomuto Sampleru se provede padesรกtkrรกt a kaลพdรฉ vlรกkno si uchovรกvรก vlastnรญ hodnoty promฤ›nnรฝch.

Shrลˆte tento pล™รญspฤ›vek takto: