Procesor în JMeter: Preprocesor și postprocesor
⚡ Rezumat inteligent
Procesor în JMeter modifică cererile Sampler înainte sau după execuție. PreProcessor pregătește datele cererii, în timp ce PostProcessor extracvalorile ts și controlează fluxul de testare, permițând corelarea, parametrizarea dinamică și un comportament fiabil la testele de performanță.

Un procesor în Apache JMeter este un element al planului de testare care modifică Samplerele din domeniul său de aplicare. Se execută automat, fie chiar înainte ca o cerere să plece JMeter sau imediat după sosirea unui răspuns, ceea ce îl face principalul mecanism pentru gestionarea datelor dinamice în timpul unei test de performanță.
Există 2 tipuri de procesoare:
- Pre-procesor
- Post-procesor
Osciloscopul decide cât de departe ajunge un procesor. Un procesor plasat direct sub un Planul de testare sau un Grup de Fire de Elaborare se aplică fiecărui Sampler de sub acesta, în timp ce un procesor imbricat într-un singur Sampler afectează doar acea solicitare. Înțelegerea acestei reguli previne greșelile de configurare abordate în secțiunea de depanare a acestei pagini.
Pre-procesor
Pre-procesorul execută o acțiune înainte efectuarea cererii de eșantionare.
Luați în considerare un exemplu simplu: să presupunem că v-ați dorit JMeter să „păianjen” prin site-ul testat, analiza link (verificați toate linkurile de pe pagină) și reveni HTML-ul. Ați adăuga unele acțiuni, cum ar fi „Analizator de linkuri HTML” la controler înainte de a crea o solicitare HTTP.
Diagrama de mai sus prezintă preprocesorul situat între controler și cererea de ieșire. Deoarece rulează primul, este locul corect pentru a construi datele cererii: generarea unei marchere temporale, citirea unei valori dintr-o coloană CSV, rescrierea unui identificator de sesiune în fișierul URLsau atribuirea de acreditări diferite fiecărui utilizator virtual.
Post-procesor
Post-procesorul execută o anumită acțiune după ce face o solicitare Sampler.
Luați în considerare un exemplu simplu: JMeter trimite o solicitare HTTP către serverul web testat (etc www.google.com) și obțineți răspunsul. Tu vrei JMeter pentru a opri testul dacă răspunsul serverului este o eroare. Puteți utiliza post-procesorul pentru a efectua sarcina de mai sus, după cum urmează:
După cum ilustrează a doua diagramă, postprocesorul citește răspunsul după ce Samplerul se termină. Acesta este și răspunsul standard la corelație. Când un server returnează un token, un ID de sesiune sau un număr de comandă care se schimbă la fiecare rulare, un postprocesor capturează acea valoare într-un JMeter variabilă, astfel încât următorul Sampler să o poată reutiliza.
Tipuri de preprocesoare în JMeter
Apache JMeter Este livrat cu un set compact de preprocesoare. Fiecare dintre ele pregătește un sampler într-un mod diferit, astfel încât selectarea elementului potrivit menține un plan de testare lizibil și ușor de întreținut.
- Timp de expirare eșantion: Definește o durată maximă pentru o solicitare. Orice Sampler care rulează mai mult decât valoarea configurată este marcat ca eșuat.
- Parametrii utilizatorului: Atribuie valori specifice variabilelor per utilizator virtual, astfel încât fiecare fir de execuție să trimită propriul set de date.
- Analizator de legături HTML: Examinează pagina testată, analizează linkurile găsite și le introduce în următoarea cerere HTTP.
- HTTP URL Modificator de rescriere: Injectează un identificator de sesiune în URL pentru aplicaţiile care track sesiuni fără cookie-uri.
- Parametrii utilizator RegEx: Populează parametrii cererii folosind valori captate de o expresie regulată dintr-un răspuns anterior.
- Preprocesor JDBC: Rulează o instrucțiune SQL înaintea Sampler-ului, ceea ce este util pentru seeding sau resetarea înregistrărilor din baza de date.
- Preprocesor JSR223: Execută a Groovy or Java script pentru orice logică de pregătire personalizată. Acesta înlocuiește vechiul BeanShell PreProcessor și are performanțe semnificativ mai bune sub sarcină.
💡 Sfat: Preferați preprocesorul JSR223 cu Groovy limbaj peste BeanShell. Groovy Scripturile sunt compilate și memorate în cache, așa că consumă mult mai puțin CPU atunci când mii de fire de execuție rulează în paralel.
Tipuri de postprocesoare în JMeter
Postprocesoarele se împart în două grupuri: de exemplutractori care extrag valori dintr-un răspuns și handlere care reacționează la rezultatul unui Sampler. Tabelul de mai jos mapează fiecare element la formatul de răspuns care i se potrivește cel mai bine.
| Postprocesor | Cel mai potrivit pentru | Utilizare tipică |
| Expresie regulată ExtracTdR | Orice răspuns prin SMS | Capturarea de token-uri sau ID-uri din HTML și text simplu |
| Excludere de granițătracTdR | Orice răspuns prin SMS | Capturarea unei valori folosind o limită stângă și dreaptă în loc de o expresie regulată completă |
| JSON ExtracTdR | Răspunsuri JSON | Citirea câmpurilor din sarcinile utile REST în timpul Testare API |
| Examen CSS/jQuerytracTdR | Răspunsuri HTML | Selectarea unui element prin selectorul CSS |
| XPath ExtracTdR | Răspunsuri XML și XHTML | Navigarea printr-un arbore structurat de documente |
| Postprocesor JDBC | Rezultatele bazei de date | Verificarea sau curățarea rândurilor după o solicitare |
| Postprocesor JSR223 | Orice răspuns | Analiză și aserțiuni scriptate personalizate |
| Handler de acțiuni de stare rezultat | Orice răspuns | Stopping un fir de execuție sau întregul test atunci când un Sampler eșuează |
Fostul de granițătractor a sosit în JMeter 4.0 și este adesea cea mai rapidă opțiune de scriere, deoarece solicită doar textul imediat la stânga și la dreapta valorii. Expresia regulată ExtracTor rămâne alegerea mai flexibilă atunci când marcajul înconjurător variază între răspunsuri.
Diferența dintre preprocesor și postprocesor
Ambele elemente au aceleași reguli de domeniu de aplicare, însă rezolvă probleme opuse. Comparația de mai jos rezumă distincția înainte de exemplul lucrat.
| Parametru | Preprocesor | Postprocesor |
| Timpul de execuție | Rulează înainte ca Sampler-ul să trimită solicitarea | Rulează după ce Samplerul primește răspunsul său |
| Scopul principal | Pregătește și modifică datele cererii | Citește datele de răspuns și reacționează la acestea |
| Elemente tipice | Parametri utilizator, Analizator de legături HTML, Preprocesor JSR223 | Expresie regulată Extractor, JSON Extractorul, gestionarea acțiunilor de stare a rezultatului |
| Efect asupra fluxului | Nu se poate opri testul, doar se modelează cererea | Poate opri un fir de execuție sau întreaga rulare a testului |
| Tel comun | Parametrizare | Corelarea și tratarea erorilor |
În practică, cele două funcționează ca o pereche. Un PostProcessor capturează un token de sesiune dintr-un răspuns de conectare, iar un PreProcessor, la următoarea cerere, injectează acel token înainte de trimiterea apelului. Exemplul care urmează demonstrează jumătatea PostProcessor a acelui model.
Exemplu de post-procesor
Acest tutorial vă va arăta instrucțiuni pas cu pas despre cum să utilizați Post-procesor în JMeter. Să începem cu scriptul de testare simplu.
- JMeter trimite o solicitare HTTP către serverul web testat www.google.com.
- JMeter primește un răspuns de la Google Server.
- Dacă răspunsul serverului este o eroare, JMeter voi opri testul.
- Dacă răspunsul serverului OK (nicio eroare), JMeter voi continua testul.
Aici este foaie de parcurs din acest exemplu:
Condiție prealabilă:
We reutilizarea Pasul 1 și Pasul 2 din articol JMeter Test de performanta. Dacă JMeter nu este încă instalat, urmați instrucțiunile JMeter ghid de instalare mai întâi.
Pasul 1) Adăugați un grup de fire
Click dreapta pe Planul de testare și adăugați un nou grup de fire: Adăuga -> Fire (Utilizatori) -> Grup de fire
Dar în panoul de control al grupului de fire, introduceți proprietățile firului după cum urmează:
Această setare permite JMeter crea 10 cererea utilizatorului către http://www.google.com 10 ori.
Pasul 2) Adăugați JMeter element
- Adăugați cerere HTTP implicită
- Adăugați cerere HTTP
Mai facem JMeter Trimite cerere http://www.google.com la Google Server.
Pasul 3) Adăugați elementul post-procesor
Click dreapta Grup de fire -> Adăuga -> Post-procesor -> Handler de acțiuni de stare rezultat
Handler de acțiuni de stare rezultat permite utilizatorului să oprească firul sau întregul test dacă cererea utilizatorului a eșuat.
În Panoul de tratare a acțiunii de stare rezultat, alegeți Opriți testarea acum. Această selecție va opri testul dacă JMeter obțineți eroarea de la răspunsul serverului.
Pasul 4) Configurați cererea HTTP
Deschideți panoul de solicitări HTTP. introduce „abc” la câmpul Cale.
Când intri „abc” spre cale, JMeter va crea un URL cerere către Google server: http://www.google.com/abc. Acesta URL nu există pe Google server. Este greşit URL cerere astfel Google serverul va returna o eroare.
Pasul 5) Adăugați Arborele de rezultate Vizualizare
Click dreapta Grup de fire -> Adăuga -> ascultător -> Vedeți arborele rezultate
Pasul 6) Rulați testul
Selectați View Result Tree, apăsați butonul Run din bara de meniu. Vei vedea eroare răspuns de la Google serverul și testul se vor opri fără completând 100 de fire.
Acum reveniți la pasul 4, deschideți panoul de solicitare HTTP, introduceți „calendar” la geam. Face JMeter crea URL solicita https://calendar.google.com/calendar/u/0/r la Google server. Acesta este corecta URL cerere astfel Google serverul va returna OK (fără eroare).
Selectați View Result Tree, apăsați butonul Run din bara de meniu. Vei vedea OK răspuns de la Google serverul și testul va continua până când toate cele 100 de fire de execuție sunt finalizate.
Adăugarea unui afirmație alături de Result Status Action Handler face verificarea mai strictă, deoarece o aserțiune poate eșua un Sampler care a returnat HTTP 200, dar a livrat conținut greșit.
Depanare
Dacă vă confruntați cu problema în timp ce rulați scenariul de mai sus... faceți următoarele:
- Verificați dacă vă conectați la internet printr-un proxy. Dacă da, eliminați proxy-ul.
- Deschideți o nouă instanță de Jmeter
- Deschideți ProcessorTestPlan.jmx în Jmetru
- Double- dați clic pe Grup de fire -> Vedeți arborele rezultate
- Rulați testul
Dacă un postprocesor pare să nu facă nimic, verificați mai întâi poziția sa. Un postprocesor plasat în afara domeniului de aplicare al samplerului pe care îl vizează nu rulează niciodată, aceasta fiind cea mai frecventă cauză a unui ex gol.tracvariabilă ted. Elemente conexe, cum ar fi controlere și testare distribuită urmează aceeași logică a domeniului de aplicare.









.gif)

.gif)