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.

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ลฏ:
- Pลedprocesor
- 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โ.
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ฤ:
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.
- JMeter odeลกle HTTP poลพadavek na testovanรฝ webovรฝ server www.google.com.
- JMeter dostane odpovฤฤ od Google serveru.
- Pokud je odpovฤฤ serveru chyba, JMeter vลฏle zastavit test.
- Pokud odpovฤฤ serveru OK (ลพรกdnรก chyba), JMeter vลฏle pokraฤovat test.
Zde je plรกn tohoto pลรญkladu:
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ฤ:
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.
V podoknฤ popisovaฤ akcรญ stavu vรฝsledkลฏ vyberte Zastavte test. Tato volba zastavรญ test, pokud JMeter zรญskat chybu z odpovฤdi serveru.
Krok 4) Nakonfigurujte poลพadavek HTTP
Otevลete panel poลพadavkลฏ HTTP. Vstupte "abc" do pole Cesta.
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ลฏ
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.
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).
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.
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รญ:
- Zkontrolujte, zda se pลipojujete k internetu pลes proxy. Pokud ano, odeberte proxy.
- Otevลete novou instanci Jmeter
- Otevลete ProcessorTestPlan.jmx v Jmetru
- Double-kliknฤte na skupinu vlรกken -> Zobrazit strom vรฝsledkลฏ
- 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.









.gif)

.gif)