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ță.

  • ⚙️ Definiția de bază: Un procesor modifică Samplerul în cadrul domeniului său de aplicare, executându-se fie înainte de cerere, fie după răspuns.
  • 🔍 Rolul Preprocesorului: Preprocesoarele setează variabile, rescriu URLs, analizează linkurile HTML și aplică parametrii utilizatorului înainte de rularea unui Sampler.
  • 📤 Rolul postprocesorului: Postprocesoarele citesc răspunsuri, de ex.tracvalorile dinamice t în variabile și decide dacă testul în curs de execuție continuă.
  • 🧩 ExtracSelecție tor: Expresii regulate, Boundary, JSON, CSS/jQuery și XPath extracFiecare tor se potrivește unui format de răspuns diferit.
  • 🛑 Controlul debitului: Garanția de acțiune pentru starea rezultatului oprește un fir de execuție sau întregul test atunci când un Sampler eșuează.
  • 🧪 Ghid aplicat: Șase pași construiesc un plan care se oprește automat odată ce o cale nevalidă returnează o eroare de server.

Procesor în JMeter

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:

  1. Pre-procesor
  2. 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.

Pre-procesor

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ă:

Post-procesor

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.

  1. JMeter trimite o solicitare HTTP către serverul web testat www.google.com.
  2. JMeter primește un răspuns de la Google Server.
  3. Dacă răspunsul serverului este o eroare, JMeter voi opri testul.
  4. Dacă răspunsul serverului OK (nicio eroare), JMeter voi continua testul.

Aici este foaie de parcurs din acest exemplu:

Exemplu de post-procesor

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ă:

Adăugați un grup de fire

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.

Adăugați element post-procesor

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

Adăugați element post-procesor

Pasul 4) Configurați cererea HTTP

Deschideți panoul de solicitări HTTP. introduce „abc” la câmpul Cale.

Configurați cererea HTTP

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

Adăugați vizualizare arbore de 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.

Rulați Testul

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

Rulați Testul

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.

Rulați Testul

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:

  1. Verificați dacă vă conectați la internet printr-un proxy. Dacă da, eliminați proxy-ul.
  2. Deschideți o nouă instanță de Jmeter
  3. Deschideți ProcessorTestPlan.jmx în Jmetru
  4. Double- dați clic pe Grup de fire -> Vedeți arborele rezultate
  5. 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.

Întrebări frecvente

Un PreProcesor modifică conținutul unei cereri înainte ca aceasta să fie trimisă. Un Timer întrerupe firul de execuție doar pentru un interval definit. Ambele rulează înainte de Sampler, dar Timer-ul nu modifică niciodată datele cererii.

Fostultractor salvează valoarea într-un JMeter numele variabilei pe care îl definiți. Orice Sampler ulterior din același fir de execuție îl face referire la sintaxa ${variableName}, într-o cale, un antet sau un corp de cerere.

Da. Mai mulți asistenți AI citesc acum un răspuns înregistrat și sugerează o expresie regulată sau o pereche de limite pentru corelare. Sugestia trebuie încă revizuită, deoarece AI nu poate ști care valori sunt cu adevărat dinamice.

Da. Asistenții inteligenți artificiali compară răspunsul brut cu cel din trecut.tracexpresia torului și evidențiază neconcordanțele din escaping, groupingsau domeniul de aplicare. Verificați remedierea în cadrul arborelui de rezultate înainte de a o considera încrezătoare într-o rulare de încărcare.

Procesoarele rulează o dată pentru fiecare execuție Sampler în domeniul lor de aplicare. Cu zece fire de execuție...ping de cinci ori, un procesor atașat la acel Sampler se execută de cincizeci de ori, iar fiecare fir de execuție își păstrează propriile valori variabile.

Rezumați această postare cu: