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.

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
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.
- 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.
- 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.
- Setați portul. Implicit este 8888. Orice port liber funcționează, cu condiția ca browserul să fie configurat astfel.
- 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.
- 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.
- 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.
- Îndreptați browserul către proxy folosind localhost și portul ales, apoi navigați normal prin aplicație.
- Oprește-te și fă ordine. Apăsați Stop, ștergeți toate apelurile rămase de la terți și salvați planul.
- 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
- acasă JMeter
- Selectați Planul de testare în copac
- 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
- Adăuga Cerere HTTPSelectați Grupul de fire; faceți clic dreapta Adăuga > Element de configurare > Valori implicite de solicitare 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
- 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
- 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).
- set Target operator de date cu caracter personal, unde vor fi adăugate scripturile înregistrate
- 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
- 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.
Pasul 2) Înregistrați-vă activitatea
- Acum Lansați http://www.google.com în browserul dvs. web (JMeter inca deschis)
- Căutați activitățile cuvântul cheie „guru99".
- Înapoi la JMeter, în HTTP Proxy Server, faceți clic Stop când este terminat
- După ce ați terminat înregistrarea, veți vedea JMeter a creat automat o nouă solicitare HTTP ca în figura de mai jos
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.
- Faceți clic pe Fișier > Salvați planul de testare ca
- 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
Pasul 3) Rulați planul de testare
- Selectați Grup de fire de execuție > Adăugare > Listener > Raport sumar
- Raportul rezumat va arăta câteva statistici de bază
- Selectați grup de fire, introduceți informații ca în figura de mai jos
Puteți consulta articolul JMeter Test de performanta pentru a cunoaște detaliile despre configurarea grupului de fire de execuție.
- Î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.
Pasul 4) Salvați rezultatul testului
- Clic Salvați datele din tabel pentru a salva rezultatul testului în fișier
- Introduceți numele rezultatului testului și faceți clic pe Salvare. Rezultatul testului în JMeter este salvat în format *.csv ca implicit
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:
- Repetați scriptul o dată cu un listener View Results Tree și găsiți prima solicitare eșuată.
- Comparați solicitarea eșuată cu înregistrarea. Orice valoare care diferă între două rulări trebuie corelată.
- Adaugă un fosttractor la răspunsul care a produs valoarea, apoi înlocuiți literalul codificat hardcoded cu referința variabilei.
- 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:
- 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 RecordingTestPlan.jmx în JMeter.
- 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ă.
- Faceți clic pe Grup de fire de execuție > Raport sumar.
- 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.



















