Server proxy HTTP în JMeter: Înregistrare Exemplu de Script

⚡ Rezumat inteligent

JMeter Serverul proxy HTTP înregistrează activitatea browserului într-un script de test reutilizabil. Înregistratorul se află între browser și site web, capturează fiecare solicitare într-un controler de înregistrare, iar planul salvat este redat de mai mulți utilizatori virtuali.

  • 🎬 Scop principal: Proxy-ul urmărește și înregistrează activitatea utilizatorului în timp ce un browser normal navighează în aplicația testată.
  • 🧱 Schelet de plan: Grupul de fire de execuție, valorile implicite pentru cererile HTTP și controlerul de înregistrare sunt create înainte de începerea înregistrării.
  • 🎯 Target Controlor: Această setare decide unde sunt scrise eșantionatoarele capturate în arborele planului de testare.
  • 🌐 Configurare browser: Browserul trebuie să îndrepte proxy-ul său HTTP către JMeter port, 8888 în mod implicit.
  • 🔐 Înregistrare HTTPS: Importați ApacheJMeterTemporaryRootCA.crt ca autoritate de încredere, apoi eliminați-l ulterior.
  • 🧹 Curățați scriptul: Solicitările de publicitate și analiză sunt, de asemenea, înregistrate și ar trebui excluse sau șterse.
  • 🔗 Corelați înainte de scalare: Înlocuiți token-urile de sesiune înregistrate cu extracvariabile ted sau reluarea eșuează.
  • ⚠️ Notă privind versiunea: WorkBench a fost eliminat în JMeter 5.0; elementul este acum înregistratorul de scripturi de testare HTTP(S).

JMeter Script de înregistrare pentru serverul proxy HTTP

Care este JMeter Server proxy HTTP?

JMeter Serverul proxy HTTP este un înregistrator încorporat care se află între browser și site-ul web testat. Acesta urmărește și înregistrează activitatea utilizatorului în timp ce aplicația este navigată normal și transformă fiecare solicitare capturată într-un eșantionator de solicitări HTTP în cadrul planului de testare. Deoarece JMeter 3.0 elementul a fost numit Înregistrator de scripturi de testare HTTP(S)și ambele denumiri descriu aceeași componentă.

Record de testare ajută un tester să înregistreze și să redea activitatea în raport cu o țintă de testare. Este un tip de testare automată, dar pentru mai mulți utilizatori simultan.

De ce să înregistrezi în loc să construiești scenariul manual?

O experiență realistă a utilizatorului pe un site modern produce zeci de solicitări, fiecare cu propriile anteturi, cookie-uri și parametri de formular.ping Toate acestea în samplere sunt introduse manual, fiind lente și predispuse la erori. Înregistrarea captează exact traficul trimis de browser, ceea ce oferă trei avantaje:

  • Precizie: Ordinea antetului, cookie-urile și câmpurile ascunse ale formularului sunt capturate exact așa cum le-au primit serverul.
  • Viteza: O călătorie de zece pagini durează câteva minute pentru a fi înregistrată și ore pentru a fi scrisă manual.
  • Acoperire: Apelurile AJAX în fundal care sunt invizibile în interfață apar în continuare în înregistrare.

Înregistrarea este un punct de plecare, mai degrabă decât un test finalizat. Aceasta necesită încă curățare, corelare și parametrizare înainte de a fi utilizabilă pentru testarea sarciniiSecțiunile de mai jos acoperă întreaga cale dintr-un spațiu gol JMeter fereastră către un script care se redă în mod fiabil.

Aici este foaie de parcurs a acestui exemplu practic

Server proxy HTTP în JMeter

Cum să înregistrezi un scenariu în JMeter 5.x

Versiunea actuală este Apache JMeter 5.6.3, publicată la 9 ianuarie 2024, și impune Java 8 sau mai recent, cu Java Se recomandă 17. Oricine urmează tutorialul ilustrat mai jos pe această pagină din versiunea respectivă nu va găsi un nod WorkBench, deoarece a fost eliminat în versiunea 5.0. Funcționalitatea nu a dispărut; a fost mutată. Înregistratorul este acum adăugat direct în Planul de testare și se numește Înregistrator de scripturi de testare HTTP(S).

Cea mai rapidă rută este șablonul inclus. Alegeți Fișier > Șabloane > Înregistrare și JMeter generează un plan complet care conține un grup de fire de execuție, valori implicite pentru cereri HTTP, un controler de înregistrare și înregistratorul în sine, deja conectate împreună. Construirea manuală a aceleiași structuri urmează pașii de mai jos.

  1. Construiți scheletul planului. Adăugați un grup de fire de execuție, apoi adăugați un controler de înregistrare sub acesta. Aici vor ajunge samplerele capturate.
  2. Adăugați înregistratorul la Planul de testare. Faceți clic dreapta pe nodul Plan de testare și alegeți Adăuga > Elemente non-test > Înregistrator de scripturi de testare HTTP(S)Este un rudă a Grupului Thread, nu un copil.
  3. Setați portul. Implicit este 8888. Orice port liber funcționează, cu condiția ca browserul să fie configurat astfel.
  4. Alege Target Controlor. Selectați controlerul de înregistrare creat în primul pas, astfel încât solicitările să fie grupate acolo unde vă așteptați, în loc să fie împrăștiate la rădăcina planului.
  5. Adăuga URL modele de excludere. În fila Filtrare solicitări, excludeți resursele statice cu un model precum .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Aceasta elimină cea mai mare parte a curățării manuale descrise mai târziu.
  6. Porniți înregistratorul. Clic acasă în partea de sus a panoului înregistratorului. JMeter scrie ApacheJMeterTemporaryRootCA.crt în folderul său bin în acest moment, ceea ce face posibilă înregistrarea HTTPS.
  7. Îndreptați browserul către proxy folosind localhost și portul ales, apoi navigați normal prin aplicație.
  8. Oprește-te și fă ordine. Apăsați Stop, ștergeți toate apelurile rămase de la terți și salvați planul.
  9. Validați înainte de scalare. Faceți clic dreapta pe Grupul de fire și alegeți validaAceasta execută planul o singură dată cu un singur fir de execuție, astfel încât erorile apar înainte de aplicarea oricărei încărcări.

Încă un obicei separă un script funcțional de unul fiabil. Folosește interfața grafică doar pentru construire și depanare, apoi rulează testul real din linia de comandă cu jmeter -n -t plan.jmx -l rezultate.jtl -e -o raport, care generează și un tablou de bord HTML. Aceeași comandă stă la baza testare distribuită pe mai multe generatoare de sarcină. Instalarea este acoperită în JMeter ghid de instalare, iar procedura completă este documentată pe Apache JMeter pagină de înregistrator.

⚠️ Notă privind versiunea: Capturile de ecran din tutorialul de mai jos au fost capturate pe o versiune mai veche JMeter versiune care încă avea nodul WorkBench. WorkBench a fost eliminat în JMeter 5.0. Fiecare concept se aplică în continuare; se schimbă doar locația înregistratorului, iar procedura actuală este cea prezentată mai sus.

Pasul 1) Setarea serverului proxy HTTP

Acesta este un ghid pas cu pas pentru configurarea proxy-ului

  1. acasă JMeter
  2. Selectați Planul de testare în copac
  3. Adăuga Grup de fire. Faceți clic dreapta pe Planul de testare și adăugați un nou grup de fire: Adăuga > Fire (Utilizatori) > Grup de fire

Setarea serverului proxy HTTP

  1. Adăuga Cerere HTTPSelectați Grupul de fire; faceți clic dreapta Adăuga > Element de configurare > Valori implicite de solicitare HTTP

Setarea serverului proxy HTTP

În noul element HTTP Request Defaults: în Nume server sau IP, introduceți „google.com”. Ar trebui să păstrați celelalte câmpuri goale

Setarea serverului proxy HTTP

  1. Adăuga Controler de înregistrareFaceți clic dreapta pe „Thread Group” și adăugați un controller de înregistrare: Adăuga > Controler logic > Controler de înregistrare

Setarea serverului proxy HTTP

  1. Adăuga Server proxy în WorkBench. Faceți clic dreapta pe WorkBench și adăugați proxy-ul http: Adăuga > Elemente non-test > Server proxy HTTP. Pe JMeter 5.x, faceți clic dreapta pe Planul de testare nod în schimb și alegeți Înregistrator de scripturi de testare HTTP(S).

Setarea serverului proxy HTTP

  1. set Target operator de date cu caracter personal, unde vor fi adăugate scripturile înregistrate

Setarea serverului proxy HTTP

  1. acasă Server proxy. Reveniți la Server proxy HTTP și faceți clic pe acasă butonul din partea de jos. Acum dvs JMeter pornirea serverului proxy

Setarea serverului proxy HTTP

  1. Porniți browserul (eu am folosit Firefox), alege Instrument > Opțiune > Avansat > Reţea > reglaj > Introduceți proxy-ul HTTP conform figurii de mai jos. În momentul curent Firefox lansează același dialog prin care se ajunge Setări cont > General > Setari de retea.

Setarea serverului proxy HTTP

Pasul 2) Înregistrați-vă activitatea

  1. Acum Lansați http://www.google.com în browserul dvs. web (JMeter inca deschis)
  2. Căutați activitățile cuvântul cheie „guru99".
  3. Înapoi la JMeter, în HTTP Proxy Server, faceți clic Stop când este terminat

Înregistrarea activității

  1. După ce ați terminat înregistrarea, veți vedea JMeter a creat automat o nouă solicitare HTTP ca în figura de mai jos

Înregistrarea activității

JMeter a înregistrat deja o solicitare de utilizator către Pagina de pornire of Google site-ul web. http://www.google.com/

Celelalte solicitări HTTP sunt afișate în figura de mai sus, ar trebui să le eliminați. Pentru că cândva JMeter înregistrează, de asemenea, unele linkuri publicitare în timp ce căutați cuvinte cheie pe GoogleAr trebui să le ignorăm în Planul nostru de testare.

  1. Faceți clic pe Fișier > Salvați planul de testare ca

Înregistrarea activității

  1. Se afișează o casetă de dialog > introduceți numele planului de testare în câmpul Nume fișier > Faceți clic pe Salvare. Acum planul de testare este salvat sub numele RecordingTestPlan.jmx

Înregistrarea activității

Pasul 3) Rulați planul de testare

  1. Selectați Grup de fire de execuție > Adăugare > Listener > Raport sumar

Rulați planul de testare

  1. Raportul rezumat va arăta câteva statistici de bază

Rulați planul de testare

  1. Selectați grup de fire, introduceți informații ca în figura de mai jos

Rulați planul de testare

Puteți consulta articolul JMeter Test de performanta pentru a cunoaște detaliile despre configurarea grupului de fire de execuție.

  1. Înainte de a începe testul, selectați „Raport rezumat”. Când sunteți gata să rulați un test, selectați Executare > Start (Ctrl+R). JMeter va reda activitatea dvs. de 100 de ori. Pe măsură ce testul rulează, statisticile se vor schimba până când testul este finalizat.

Rulați planul de testare

Pasul 4) Salvați rezultatul testului

  1. Clic Salvați datele din tabel pentru a salva rezultatul testului în fișier

Salvați rezultatul testului

  1. Introduceți numele rezultatului testului și faceți clic pe Salvare. Rezultatul testului în JMeter este salvat în format *.csv ca implicit

Salvați rezultatul testului

Descărcați planul de testare pentru înregistrarea fișierelor

Descărcați serverul proxy HTTP pentru fișiere

Înregistrarea traficului și certificatelor HTTPS

Aproape fiecare site folosește acum HTTPS, versiunea anterioară soluției. Un proxy nu poate citi traficul criptat decât dacă browserul are încredere în el, așa că este necesar un pas suplimentar.

Când pornește înregistratorul, JMeter generează un certificat rădăcină temporar numit ApacheJMeterTemporaryRootCA.crt în directorul său bin. Importați fișierul respectiv în browser ca autoritate de certificare de încredere, apoi reporniți browserul. JMeter poate acum să prezinte propriul certificat pentru fiecare site și să decripteze sesiunea pentru înregistrare.

Trei aspecte merită știute:

  • Certificatul expiră după șapte zile. Acest lucru este intenționat. Ștergeți-l și lăsați JMeter regenerați unul nou în loc să extindeți valabilitatea.
  • Scoateți-l când ați terminat. Lăsarea unui certificat rădăcină de încredere instalat pe o mașină funcțională reprezintă un risc de securitate real, nu unul teoretic.
  • Unele aplicații îl refuză. Site-urile care utilizează fixarea certificatelor sau TLS reciproc nu pot fi înregistrate deloc printr-un proxy, iar scriptul trebuie construit manual din instrumentele de dezvoltare ale browserului.

Corelație: Redarea unui scenariu înregistrat

Un script înregistrat reproduce exact ceea ce s-a întâmplat o dată, ceea ce rareori se întâmplă a doua oară. Identificatorii de sesiune, token-urile și cheile generate capturate în timpul înregistrării sunt valori inactive în momentul în care scriptul este redat din nou, iar rularea eșuează în moduri care par a fi erori de aplicație.

Corelația este soluția. A postprocesor cum ar fi expresia regulată Extractor sau JSON ExtracTor capturează valoarea proaspătă din răspunsul de autentificare, o stochează într-o variabilă, iar cererile ulterioare fac referire la acea variabilă în loc de literalul înregistrat.

Fluxul de lucru este scurt:

  1. Repetați scriptul o dată cu un listener View Results Tree și găsiți prima solicitare eșuată.
  2. Comparați solicitarea eșuată cu înregistrarea. Orice valoare care diferă între două rulări trebuie corelată.
  3. Adaugă un fosttractor la răspunsul care a produs valoarea, apoi înlocuiți literalul codificat hardcoded cu referința variabilei.
  4. Adăugați un afirmație Deci, o pagină care returnează HTTP 200 cu un mesaj de eroare tot nu trece testul.

Numai după corelare scriptul poate fi scalat în siguranță. Rularea unei înregistrări necorelate la o sută de utilizatori măsoară gestionarea erorilor, mai degrabă decât performanțăAlte elemente sunt acoperite în întregul JMeter tutoriale.

Depanare

Dacă întâmpinați o problemă în timp ce executaț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 RecordingTestPlan.jmx în JMeter.
  4. Faceți clic dreapta pe Workbench > Merge > Selectați HTTP Proxy Server.jmx. Activat JMeter 5.x, îmbinați-l în nodul Plan de testare, deoarece WorkBench nu mai există.
  5. Faceți clic pe Grup de fire de execuție > Raport sumar.
  6. Rulați testul.

Două alte simptome explică majoritatea erorilor rămase. Dacă browserul raportează că nu se poate conecta, înregistratorul nu a fost niciodată pornit sau portul setat în browser nu corespunde cu portul setat în JMeterDacă paginile se încarcă normal, dar nu apare nimic în arbore, traficul este HTTPS și certificatul nu a fost importat.

Întrebări frecvente

A fost îndepărtat în JMeter 5.0. Elementele care nu sunt de testare, cum ar fi înregistratorul de scripturi de testare HTTP(S), sunt acum adăugate direct sub nodul Plan de testare.

Adăuga URL modele de exclus din fila Filtrare solicitări a înregistratorului. Un model care acoperă extensiile comune de fișiere statice elimină cea mai mare parte a zgomotului înainte ca acesta să ajungă la script.

Inteligența artificială clasifică eșantionatoarele înregistrate în etape de business și zgomot de la terți, apoi propune care dintre ele să fie șterse și ce valori trebuie corelate, transformând mai rapid o captură brută într-un script utilizabil.

Da. Având în vedere corpul răspunsului și valoarea de captat, inteligența artificială creează o expresie regulată sau o pereche de limite. Verificați acest lucru în Vizualizare arbore de rezultate, deoarece un model se poate potrivi într-un răspuns și nu în altul.

Browserul nu are încredere în JMeter proxy. Import ApacheJMeterTemporaryRootCA.crt din JMeter folderul bin ca autoritate de încredere, reporniți browserul și înregistrați din nou.

Da. Setați proxy-ul Wi-Fi al dispozitivului la adresa IP și portul aparatului de înregistrare, apoi instalați JMeter certificat pe dispozitiv. Aplicațiile care utilizează fixarea certificatelor tot nu pot fi înregistrate.

Nu. Interfața grafică este pentru construire și depanare. Rulați testul propriu-zis în modul linie de comandă, care utilizează mult mai puțină memorie și produce un raport HTML la final.

Planurile de testare sunt salvate ca .jmx, un format XML care funcționează bine în controlul versiunilor. Rezultatele sunt scrise ca .jtl, care este CSV în mod implicit și poate fi stocat și ca XML.

Rezumați această postare cu: