JMeter poate genera eșantionare de cereri HTTP acționând ca un proxy de înregistrare locală între un browser și o aplicație țintă autorizată. Versiunile actuale numesc această componentă HTTP(S) Test Script Recorder . Aceasta capturează o călătorie a browserului către un controler de înregistrare, după care scriptul trebuie curățat, corelat, validat și executat ca test la nivel de protocol.

Testați doar sistemele pe care le dețineți sau pe care sunteți autorizat în mod explicit să le evaluați. Înregistrările pot conține parole, cookie-uri, token-uri și date personale. Preferați conturile de testare, eliminați secretele înainte de a partaja fișiere JMX și respectați limitele de încărcare aprobate.

Ce este serverul proxy HTTP JMeter?

Înregistratorul ascultă pe un port local, de obicei 8888Un browser trimite cereri HTTP și HTTPS către acel proxy, iar JMeter convertește traficul corespunzător în samplere sub un controller selectat. În timpul redării, JMeter trimite cereri direct; nu lansează un browser pentru fiecare utilizator virtual.

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

  • Capturează o ordine realistă a solicitărilor, redirecționări, formulare și API-uri în fundal.
  • Dezvăluie apeluri XHR sau fetch care sunt ușor de trecut cu vederea.
  • Creează o bază rapidă pentru o experiență complexă a utilizatorului.
  • Reduce erorile de transcriere din anteturi și parametri.

Construcția manuală rămâne mai curată pentru o API documentată de dimensiuni reduse. Înregistrarea este utilă atunci când comportamentul rețelei browserului nu este încă înțeles. Pentru terminologie, consultați ghidul nostru privind tipurile de proxy.

Cum se înregistrează un script în JMeter 5.x

  1. Porniți JMeter în modul GUI pentru crearea scriptului.
  2. Adăugați un grup de fire de execuție la planul de testare.
  3. Adăugați un controler de înregistrare sub grupul de fire de execuție.
  4. Adăugați valori implicite pentru solicitări HTTP și un manager de cookie-uri HTTP, acolo unde este cazul.
  5. Adăugați înregistratorul de scripturi de testare HTTP(S) și selectați controlerul de înregistrare ca țintă a acestuia.
  6. Folosește modele de includere/excludere pentru a limita traficul nerelevant.

Ghidul oficial de înregistrare Apache JMeter este referința specifică versiunii.

Folosește un profil de browser curat: extensiile, sincronizarea, telemetria și filele fără legătură creează solicitări zgomotoase.

Pasul 1) Setarea serverului proxy HTTP

Recorder: alegeți un port local neutilizat, cum ar fi 8888, setați controlerul țintă și faceți clic pe acasă.

Configurați browserul de testare cu gazdă proxy HTTP și HTTPS 127.0.0.1 și același port. Dacă browserul rulează într-o altă mașină virtuală sau container, localhost se referă la acel mediu; utilizați în schimb o adresă privată accesibilă aprobată.

Proxy host: 127.0.0.1
Proxy port: 8888

Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$

Nu filtrați prea agresiv la prima trecere, deoarece un API al aplicației poate utiliza un alt subdomeniu. Înregistrați o dată, inspectați gazdele, apoi rafinați modelele.

Pasul 2) Înregistrați-vă activitatea

  1. Porniți înregistratorul și acordați încredere certificatului său temporar doar în browserul de testare izolat.
  2. Deschideți mediul de testare autorizat.
  3. Efectuează o călătorie curată la viteză umană.
  4. Opriți înregistrarea imediat după acțiunea comercială finală.
  5. Restaurați setările proxy normale ale browserului.

Redenumiți eșantionatoarele în funcție de acțiunile de business și grupați cererile aferente în secțiunea Controlere de tranzacții. Eliminați analizele, reclamele, actualizările browserului, widgeturile de chat și resursele statice duplicate, cu excepția cazului în care acestea se află explicit în domeniul de aplicare.

Inspectați fiecare sampler pentru secrete. Parolele ar trebui să provină din date protejate în timpul rulării, în timp ce modificarea token-urilor necesită corelare.

Pasul 3) Rulați planul de testare

Validați un utilizator și o iterație înainte de a adăuga încărcarea. Utilizați temporar Vizualizare arbore de rezultate, verificați redirecționările și corpurile de răspuns și adăugați aserțiuni pentru rezultatul de business așteptat. HTTP 200 singur nu dovedește că autentificarea sau finalizarea a reușit.

Threads: 1
Ramp-up: 1 second
Loop Count: 1

După depanare, eliminați listenerele grele și rulați non-GUI:

jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report

Directorul de raportare trebuie să fie nou sau gol. Măriți treptat sarcina și monitorizați sistemul țintă, precum și JMeter.

Pasul 4) Salvați rezultatul testului

Salvați planul reutilizabil ca .jmx fișier și păstrați datele generate separat:

  • JMX: eșantionoare, controlere, aserțiuni, temporizatoare, variabile și configurare.
  • JTL: rezultatele probelor brute pentru analiză.
  • Tablou de bord HTML: percentile, debit, erori și fire de execuție active.
  • Metrici ale serverului: Telemetria CPU, memorie, bază de date, coadă și servicii.

Versionează planul cu proprietăți non-secrete și date de testare. Înregistrează versiunile JMeter și Java, versiunea țintă, mediul, numărul de utilizatori, implementarea și durata.

Nu rulați o încărcare serioasă din interfața grafică. Ascultătoarele GUI consumă memorie și pot distorsiona rezultatele.

Înregistrarea traficului și certificatelor HTTPS

Pentru HTTPS, JMeter generează o autoritate de certificare temporară atunci când pornește înregistratorul. Importați-o doar în browserul de testare dedicat, înregistrați site-ul autorizat, apoi eliminați-l.

  1. Porniți înregistratorul de scripturi de testare HTTP(S).
  2. Localizați certificatul ApacheJMeterTemporaryRootCA generat.
  3. Importați-l ca autoritate de încredere în profilul izolat.
  4. Înregistrați parcursul HTTPS aprobat.
  5. Scoateți certificatul când ați terminat.

Fixarea certificatelor, TLS reciproc, browserele gestionate, aplicațiile mobile și protocoalele de transport mai noi pot bloca interceptarea. Nu slăbiți controalele de securitate pentru producție. Folosiți o versiune de staging, o specificație API sau o metodă alternativă de captură aprobată.

Corelație: Redarea unui scenariu înregistrat

ID-urile de sesiune, token-urile CSRF, starea OAuth, semnăturile cererilor și ID-urile resurselor se modifică între rulări. Corelația extrage o valoare nouă dintr-un răspuns și o înlocuiește în cererile ulterioare.

  1. Localizați răspunsul care conține primul valoarea dinamică.
  2. Adăugați un extractor JSON, CSS, XPath sau de expresii regulate.
  3. Stocați rezultatul într-o variabilă JMeter denumită.
  4. Înlocuiți valorile ulterioare codificate hard cu referința variabilei.
  5. Eșuează în mod clar când extragerea nu returnează nicio potrivire.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND

Later header:
X-CSRF-Token: ${csrfToken}

Parametrizarea furnizează date independente despre utilizatori, adesea din fișiere CSV. Corelarea capturează datele generate de server în timpul execuției. Planurile realiste au nevoie de obicei de ambele.

Depanare

ProblemăCauza probabilaRepara
Nicio solicitare înregistratăProxy greșit, înregistrator oprit, conflict de port sau regulă de ocolireConfirmați gazda și portul, porniți înregistratorul și eliminați excluderile țintelor.
Avertisment HTTPSAutorizație de certificare temporară lipsește sau a expiratGenerați un certificat de înregistrator nou și importați-l doar în profilul de testare.
Prea mult traficExtensii, telemetrie, alte file sau modele generaleFolosește un profil curat și rafinează filtrele de includere/excludere.
Reluarea autentificării eșueazăLipsesc cookie-uri, token-uri, flux OAuth sau corelațieAdăugați Managerul de cookie-uri, extrageți valorile dinamice și inspectați redirecționările.
Browser offline ulteriorÎncă indică spre proxy-ul local opritRestaurați setările automate sau fără proxy.
Eroare de memorie JMeterAscultători GUI sau stocare mare de răspunsuriFolosește modul non-GUI și limitează datele de răspuns salvate.
Diferit de browserJMeter nu randează sau execută codul JavaScript al paginiiTestați API-urile subiacente și utilizați instrumentele browserului pentru randarea metricilor.

JMeter este un instrument de performanță a protocolului. Nu poate măsura singur evenimente vizuale precum Largest Contentful Paint.

Întrebări frecvente

Ce a înlocuit numele serverului proxy HTTP în JMeter?

Componenta se numește acum HTTP(S) Test Script Recorder.

Ce port de înregistrare ar trebui să folosesc?

Orice port local neutilizat funcționează. Portul 8888 este comun, iar browserul trebuie să utilizeze aceeași valoare.

Poate JMeter să înregistreze traficul HTTPS?

Da, atunci când browserul de testare izolat are încredere în certificatul temporar de înregistrare al JMeter.

De ce un script înregistrat eșuează la redare?

Jetoanele dinamice, cookie-urile, fluxurile de autentificare, diferențele de gazdă și datele lipsă necesită de obicei corelare și parametrizare.

Poate JMeter să înregistreze Chrome?

Da. Configurați un profil Chrome curat pentru a utiliza înregistratorul local al JMeter.

Ar trebui să rulez teste de încărcare din interfața grafică JMeter?

Nu. Construiește și depanează în modul GUI, apoi execută load în modul non-GUI.

Se comportă JMeter ca un browser real?

Nu. Trimite cereri de protocol, dar nu redă HTML și nu execută JavaScript al browserului.

Este sigur să înregistrez o autentificare de producție?

Preferați conturile de testare și de testare. Captura de producție necesită autorizare explicită și gestionarea strictă a secretelor.