Procesor u JMeter: pretprocesor i postprocesor
โก Pametni saลพetak
Procesor u JMeter modificira zahtjeve Samplera prije ili nakon izvrลกenja. PreProcessor priprema podatke zahtjeva, dok PostProcessor izvrลกavatracts vrijednosti i kontrolira tok testiranja, omoguฤujuฤi korelaciju, dinamiฤku parametrizaciju i pouzdano ponaลกanje pri testiranju performansi.

Procesor u Apache JMeter je element plana testiranja koji mijenja uzorke unutar svog opsega. Pokreฤe se automatski, neposredno prije slanja zahtjeva JMeter ili odmah nakon ลกto stigne odgovor, ลกto ga ฤini glavnim mehanizmom za rukovanje dinamiฤkim podacima tijekom test izvedbe.
Postoje 2 vrste procesora:
- Predprocesor
- Postprocesor
Opseg odreฤuje koliko daleko procesor doseลพe. Procesor smjeลกten izravno ispod Plan testiranja ili se Grupa niti primjenjuje na svaki Sampler ispod nje, dok procesor ugnijeลพฤen unutar jednog Samplera utjeฤe samo na taj zahtjev. Razumijevanje ovog pravila sprjeฤava pogreลกke u konfiguraciji obraฤene u odjeljku za rjeลกavanje problema na ovoj stranici.
Predprocesor
Pretprocesor izvrลกava neku radnju prije izradu Zahtjeva za uzorkivaฤ.
Razmotrimo jednostavan primjer: recimo da ste htjeli JMeter za "pauk" kroz web stranicu koja se testira, raลกฤlanjivanja link (provjerite sve linkove na stranici) i povratak HTML. Dodali biste neku radnju kao ลกto je "HTML link parser" vaลกem kontroleru prije stvaranja HTTP zahtjeva.
Gornji dijagram prikazuje predprocesor koji se nalazi izmeฤu kontrolera i odlaznog zahtjeva. Buduฤi da se pokreฤe prvi, to je ispravno mjesto za izgradnju podataka zahtjeva: generiranje vremenske oznake, ฤitanje vrijednosti iz CSV stupca, prepisivanje identifikatora sesije u URLili dodjeljivanje razliฤitih vjerodajnica svakom virtualnom korisniku.
Postprocesor
Postprocesor izvrลกava neke radnje nakon podnoลกenja zahtjeva za uzorkovanje.
Razmotrimo jednostavan primjer: JMeter ลกalje HTTP zahtjev testiranom web posluลพitelju (itd www.google.com) i dobiti odgovor. Ti ลพeliลก JMeter zaustaviti test ako je odgovor posluลพitelja pogreลกka. Postprocesor moลพete koristiti za izvrลกavanje gornjeg zadatka na sljedeฤi naฤin:
Kao ลกto drugi dijagram ilustrira, postprocesor ฤita odgovor nakon ลกto se uzorkovanje zavrลกi. Ovo je ujedno i standardni odgovor na korelaciju. Kada posluลพitelj vrati token, ID sesije ili broj narudลพbe koji se mijenja pri svakom pokretanju, postprocesor biljeลพi tu vrijednost u JMeter varijablu tako da je sljedeฤi Sampler moลพe ponovno upotrijebiti.
Vrste predprocesora u JMeter
Apache JMeter Isporuฤuje se s kompaktnim setom predprocesora. Svaki od njih priprema uzorkivaฤ na drugaฤiji naฤin, tako da odabir pravog elementa odrลพava plan testiranja ฤitljivim i jednostavnim za odrลพavanje.
- Vremensko ograniฤenje uzorka: Definira maksimalno trajanje zahtjeva. Svaki Sampler koji se izvrลกava dulje od konfigurirane vrijednosti oznaฤava se kao neuspjeลกan.
- Korisniฤki parametri: Dodjeljuje specifiฤne vrijednosti varijablama po virtualnom korisniku, tako da svaka nit ลกalje vlastiti skup podataka.
- HTML parser linkova: Pretraลพi testiranu stranicu, analizira pronaฤene poveznice i unosi ih u sljedeฤi HTTP zahtjev.
- HTTP URL Modifikator prepisivanja: Ubrizgava identifikator sesije u URL za aplikacije koje track sesija bez kolaฤiฤa.
- Korisniฤki parametri RegEx-a: Popunjava parametre zahtjeva koristeฤi vrijednosti zabiljeลพene regularnim izrazom iz ranijeg odgovora.
- JDBC predprocesor: Pokreฤe SQL naredbu prije Samplera, ลกto je korisno za pokretanje ili resetiranje zapisa u bazi podataka.
- JSR223 predprocesor: Izvrลกava Groovy or Java skripta za bilo koju prilagoฤenu logiku pripreme. Zamjenjuje stariji BeanShell PreProcessor i znatno bolje radi pod optereฤenjem.
๐ก Savjet: Preferirajte JSR223 predprocesor s Groovy jezik preko BeanShella. Groovy Skripte se kompiliraju i pohranjuju u predmemoriju, pa troลกe puno manje CPU-a kada se tisuฤe niti izvode paralelno.
Vrste postprocesora u JMeter
Postprocesori se dijele u dvije skupine: npr.tractori koji izvlaฤe vrijednosti iz odgovora i rukovatelji koji reagiraju na rezultat Samplera. Tablica u nastavku mapira svaki element u format odgovora koji mu najbolje odgovara.
| Postprocesor | Najbolje za | Tipiฤna upotreba |
| Regularni izraz Extrachumka | Bilo koji tekstualni odgovor | Hvatanje tokena ili ID-ova iz HTML-a i obiฤnog teksta |
| Graniฤni Extrachumka | Bilo koji tekstualni odgovor | Hvatanje vrijednosti pomoฤu lijeve i desne granice umjesto punog regularnog izraza |
| JSON Extrachumka | JSON odgovori | ฤitanje polja iz REST sadrลพaja tijekom API testiranje |
| CSS/jQuery Extrachumka | HTML odgovori | Odabir elementa pomoฤu CSS selektora |
| XPath primjertrachumka | XML i XHTML odgovori | Navigacija kroz strukturirano stablo dokumenata |
| JDBC postprocesor | Rezultati baze podataka | Provjera ili ฤiลกฤenje redaka nakon zahtjeva |
| JSR223 Postprocesor | Bilo koji odgovor | Prilagoฤeno skriptirano parsiranje i tvrdnje |
| Rukovatelj radnjom statusa rezultata | Bilo koji odgovor | zaustavitiping nit ili cijeli test kada Sampler ne uspije |
Graniฤni bivลกitracTor je stigao u JMeter 4.0 i ฤesto je najbrลพa opcija za pisanje, jer traลพi samo tekst odmah lijevo i desno od vrijednosti. Regularni izraz, primjertractor ostaje fleksibilniji izbor kada se okolno oznaฤavanje razlikuje izmeฤu odgovora.
Razlika izmeฤu predprocesora i postprocesora
Oba elementa dijele ista pravila opsega, ali rjeลกavaju suprotne probleme. Usporedba u nastavku saลพima razliku prije obrade primjera.
| Parametar | Predprocesor | Postprocesor |
| Vrijeme izvrลกavanja | Izvodi se prije nego ลกto Sampler poลกalje svoj zahtjev | Pokreฤe se nakon ลกto Sampler primi svoj odgovor |
| Glavna svrha | Priprema i mijenja podatke zahtjeva | ฤita podatke odgovora i reagira na njih |
| Tipiฤni elementi | Korisniฤki parametri, HTML parser linkova, JSR223 predprocesor | Regularni izraz Extractor, JSON Extractor, Rukovatelj radnjom statusa rezultata |
| Uฤinak na protok | Ne moลพe zaustaviti test, samo oblikuje zahtjev | Moลพe zaustaviti nit ili cijelo testiranje |
| Zajedniฤki cilj | Parametriranje | Korelacija i rukovanje pogreลกkama |
U praksi to dvoje funkcionira kao par. PostProcessor hvata token sesije iz odgovora na prijavu, a PreProcessor u sljedeฤem zahtjevu ubrizgava taj token prije slanja poziva. Primjer koji slijedi demonstrira PostProcessorovu polovicu tog uzorka.
Primjer postprocesora
Ovaj vodiฤ ฤe vam pokazati upute korak po korak o tome kako koristiti postprocesor u JMeter. Zapoฤnimo s jednostavnom testnom skriptom.
- JMeter ลกalje HTTP zahtjev testiranom web posluลพitelju www.google.com.
- JMeter dobiva odgovor od Google posluลพitelj.
- Ako je odgovor posluลพitelja greลกka, JMeter volja zaustaviti ispit.
- Ako odgovor posluลพitelja OK (nema greลกke), JMeter volja nastaviti ispit.
Ovdje je Putokaz ovog primjera:
Preduvjet:
We ponovno koriลกtenje korak 1 i korak 2 u ฤlanku JMeter Ispitivanje performansi, Ako JMeter joลก nije instaliran, slijedite JMeter Vodiฤ za instalaciju na prvom mjestu.
Korak 1) Dodajte grupu niti
Desni klik na Plan testiranja i dodajte novu grupu niti: dodati -> Niti (korisnici) -> Grupa niti
Ali na upravljaฤkoj ploฤi grupe niti unesite Svojstva niti na sljedeฤi naฤin:
Ova postavka omoguฤuje JMeter stvoriti 10 korisniฤki zahtjev za http://www.google.com 10 puta.
Korak 2) Dodajte JMeter elementi
- Dodaj zadani HTTP zahtjev
- Dodajte HTTP zahtjev
Joลก uvijek proizvodimo JMeter Poลกalji zahtjev http://www.google.com do Google posluลพitelj.
Korak 3) Dodajte postprocesorski element
Desni klik Grupa niti -> dodati -> Post procesor -> Rukovatelj radnjom statusa rezultata
Rukovatelj radnjom statusa rezultata omoguฤuje korisniku da zaustavi nit ili cijeli test ako korisniฤki zahtjev nije uspio.
U oknu s ruฤkom statusa rezultata odaberite Zaustavi testiranje sada. Ovaj odabir ฤe zaustaviti test ako JMeter dobiti greลกku iz odgovora posluลพitelja.
Korak 4) Konfigurirajte HTTP zahtjev
Otvorite ploฤu HTTP zahtjeva. Unesi "abc" u polje Put.
Kad uฤete "abc" na put, JMeter stvorit ฤe a URL zahtjev za Google posluลพitelj: http://www.google.com/abc. Ovaj URL ne postoji na Google posluลพitelj. To je nepravdi URL zahtjev Google posluลพitelj ฤe vratiti greลกku.
Korak 5) Dodajte prikaz stabla rezultata
Desni klik Grupa niti -> dodati -> sluลกalac -> Prikaz stabla rezultata
Korak 6) Pokrenite test
Odaberite Pregled stabla rezultata, pritisnite gumb Pokreni na traci izbornika. Vidjet ฤete pogreลกka odgovor od Google posluลพitelj i test ฤe se zaustaviti bez dovrลกavanje 100 niti.
Sada se vratite na korak 4, otvorite okno HTTP zahtjeva, unesite "kalendarโ na okno. Radi JMeter stvoriti URL zatraลพiti https://calendar.google.com/calendar/u/0/r prema Google posluลพitelj. Ovo je ispraviti URL zahtjev Google Posluลพitelj ฤe vratiti OK (nema greลกke).
Odaberite Pregled stabla rezultata, pritisnite gumb Pokreni na traci izbornika. Vidjet ฤete OK odgovor od Google posluลพitelj i test ฤe se nastaviti sve dok se ne zavrลกi svih 100 niti.
Dodavanje an tvrdnja uz Rjeลกavanje radnje statusa rezultata ฤini provjeru stroลพom, jer tvrdnja moลพe propasti Sampler koji je vratio HTTP 200, ali je isporuฤio pogreลกan sadrลพaj.
Rjeลกavanje problema
Ako se suoฤite s problemom tijekom pokretanja gornjeg scenarija... uฤinite sljedeฤe:
- Provjerite povezujete li se na internet putem proxyja. Ako da, uklonite proxy.
- Otvorite novu instancu Jmetera
- Otvorite ProcessorTestPlan.jmx u Jmetru
- Double-kliknite na Thread Group -> View Results Tree
- Pokrenite test
Ako se ฤini da postprocesor ne radi niลกta, prvo provjerite njegov poloลพaj. Postprocesor postavljen izvan dosega samplera kojeg cilja nikada se ne pokreฤe, ลกto je najฤeลกฤi uzrok praznog extracvarijabla ted. Povezani elementi kao ลกto su kontroleri i distribuirano testiranje slijediti istu logiku opsega.









.gif)

.gif)