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.

  • ๏ธ Osnovna definicija: Procesor modificira Sampler unutar svog opsega, izvrลกavajuฤ‡i se ili prije zahtjeva ili nakon odgovora.
  • ๐Ÿ” Uloga predprocesora: Preprocesori postavljaju varijable, prepisuju URLs, analizirati HTML poveznice i primijeniti korisniฤke parametre prije pokretanja Samplera.
  • ๐Ÿ“ค Uloga postprocesora: Postprocesori ฤitaju odgovore, npr.tract dinamiฤke vrijednosti u varijable i odluฤiti hoฤ‡e li se izvoฤ‘enje testa nastaviti.
  • ๐Ÿงฉ ExtracOdabir tor-a: Regularni izrazi, granice, JSON, CSS/jQuery i XPath npr.tracSvaki od tor-a odgovara drugaฤijem formatu odgovora.
  • ๐Ÿ›‘ Kontrola protoka: Rukovatelj radnjom statusa rezultata zaustavlja jednu nit ili cijeli test kada uzorkovanje ne uspije.
  • ๐Ÿงช Primijenjeni vodiฤ: ล est koraka izraฤ‘uje plan koji se automatski zaustavlja kada nevaลพeฤ‡a putanja vrati pogreลกku posluลพitelja.

Procesor u JMeter

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:

  1. Predprocesor
  2. 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.

Predprocesor

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:

Postprocesor

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.

  1. JMeter ลกalje HTTP zahtjev testiranom web posluลพitelju www.google.com.
  2. JMeter dobiva odgovor od Google posluลพitelj.
  3. Ako je odgovor posluลพitelja greลกka, JMeter volja zaustaviti ispit.
  4. Ako odgovor posluลพitelja OK (nema greลกke), JMeter volja nastaviti ispit.

Ovdje je Putokaz ovog primjera:

Primjer postprocesora

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:

Dodaj grupu niti

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.

Dodajte postprocesorski element

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.

Dodajte postprocesorski element

Korak 4) Konfigurirajte HTTP zahtjev

Otvorite ploฤu HTTP zahtjeva. Unesi "abc" u polje Put.

Konfigurirajte HTTP zahtjev

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

Dodaj 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.

Pokrenite test

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).

Pokrenite test

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.

Pokrenite test

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:

  1. Provjerite povezujete li se na internet putem proxyja. Ako da, uklonite proxy.
  2. Otvorite novu instancu Jmetera
  3. Otvorite ProcessorTestPlan.jmx u Jmetru
  4. Double-kliknite na Thread Group -> View Results Tree
  5. 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.

Pitanja i odgovori

Preprocesor mijenja sadrลพaj zahtjeva prije slanja. Timer pauzira nit samo za definirani interval. Oba se izvode prije samplera, ali Timer nikada ne mijenja podatke zahtjeva.

Bivลกi/atractor sprema vrijednost u JMeter naziv varijable koji definirate. Bilo koji kasniji Sampler u istoj niti referencira ga sintaksom ${variableName}, u putanji, zaglavlju ili tijelu zahtjeva.

Da. Nekoliko AI asistenata sada ฤita snimljeni odgovor i predlaลพe regularni izraz ili graniฤni par za korelaciju. Prijedlog joลก treba pregledati jer AI ne moลพe znati koje su vrijednosti zaista dinamiฤne.

Da. AI asistenti usporeฤ‘uju sirovi odgovor s bivลกimtracizraz tor i ukazati na neusklaฤ‘enosti u escaping, grupingili opseg. Provjerite ispravak unutar stabla rezultata prikaza prije nego ลกto ga smatrate pouzdanim u pokretanju uฤitavanja.

Procesori se izvrลกavaju jednom za svako izvrลกavanje Samplera unutar svog opsega. S deset niti looping pet puta, procesor prikljuฤen na taj Sampler izvrลกava se pedeset puta, a svaka nit zadrลพava vlastite vrijednosti varijabli.

Saลพmite ovu objavu uz: