JMeter può generare campionatori di richieste HTTP fungendo da proxy di registrazione locale tra un browser e un'applicazione di destinazione autorizzata. Le versioni attuali chiamano questo componente HTTP(S) Test Script Recorder . Cattura un percorso del browser in un Recording Controller, dopodiché lo script deve essere ripulito, correlato, convalidato ed eseguito come test a livello di protocollo.
Cos'è il server proxy HTTP di JMeter?
Il registratore ascolta su una porta locale, comunemente 8888Un browser invia richieste HTTP e HTTPS a quel proxy e JMeter converte il traffico corrispondente in campionatori sotto un controller selezionato. Durante la riproduzione, JMeter invia le richieste direttamente; non avvia un browser per ogni utente virtuale.
Perché registrare invece di scrivere la sceneggiatura a mano?
- Cattura in modo realistico l'ordine delle richieste, i reindirizzamenti, i moduli e le API in background.
- Rivela le chiamate XHR o fetch che sono facili da trascurare.
- Consente di creare rapidamente una base di riferimento per un percorso utente complesso.
- Riduce gli errori di trascrizione nelle intestazioni e nei parametri.
La creazione manuale risulta più pulita per un'API di piccole dimensioni e ben documentata. La registrazione è utile quando il comportamento di rete del browser non è ancora del tutto compreso. Per la terminologia, consultare la nostra guida sui tipi di proxy.
Come registrare uno script in JMeter 5.x
- Avvia JMeter in modalità GUI per la creazione dello script.
- Aggiungi un gruppo di thread al piano di test.
- Aggiungi un controller di registrazione al gruppo Thread.
- Aggiungere le impostazioni predefinite per le richieste HTTP e un gestore di cookie HTTP, ove opportuno.
- Aggiungi il registratore di script di test HTTP(S) e seleziona il controller di registrazione come destinazione.
- Utilizza i modelli di inclusione/esclusione per limitare il traffico non correlato.
La guida ufficiale alla registrazione di Apache JMeter è il riferimento autorevole specifico per la versione.
Passaggio 1) Impostazione del server proxy HTTP
8888, imposta il controller di destinazione e fai clic Inizio.Configura il browser di test con host proxy HTTP e HTTPS 127.0.0.1 e la stessa porta. Se il browser è in esecuzione su un'altra macchina virtuale o container, localhost si riferisce a tale ambiente; utilizzare invece un indirizzo privato raggiungibile e approvato.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Non applicare filtri troppo aggressivi al primo tentativo, perché l'API di un'applicazione potrebbe utilizzare un sottodominio diverso. Registra i dati una sola volta, esamina gli host e poi affina i modelli.
Passaggio 2) Registra la tua attività
- Avvia il programma di registrazione e considera attendibile il suo certificato temporaneo solo nel browser di test isolato.
- Aprire l'ambiente di test autorizzato.
- Effettua un viaggio senza intoppi a velocità umana.
- Interrompere la registrazione immediatamente dopo l'ultima operazione aziendale.
- Ripristina le impostazioni proxy predefinite del browser.
Rinominare i campionatori in base all'azione aziendale e raggruppare le richieste correlate in Controller delle transazioni. Rimuovere analisi, annunci pubblicitari, aggiornamenti del browser, widget di chat e risorse statiche duplicate, a meno che non siano esplicitamente inclusi nell'ambito.
Ispeziona ogni campionatore alla ricerca di segreti. Le password devono provenire da dati di runtime protetti, mentre la modifica dei token richiede una correlazione.
Passaggio 3) Esegui il piano di test
Convalida un utente e un'iterazione prima di aggiungere carico. Utilizza temporaneamente la visualizzazione ad albero dei risultati, controlla i reindirizzamenti e i corpi delle risposte e aggiungi asserzioni per il risultato aziendale previsto. Il solo codice HTTP 200 non dimostra che l'accesso o il pagamento siano andati a buon fine.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Dopo il debug, rimuovere i listener più pesanti ed eseguire l'applicazione senza interfaccia grafica:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
La directory dei report deve essere nuova o vuota. Aumentare gradualmente il carico e monitorare sia il sistema di destinazione che JMeter.
Passaggio 4) Salva il risultato del test
Salva il piano riutilizzabile come .jmx file e conserva separatamente i dati generati:
- JMX: campionatori, controllori, asserzioni, timer, variabili e configurazione.
- JTL: Risultati grezzi del campione per l'analisi.
- Dashboard HTML: percentili, throughput, errori e thread attivi.
- Metriche del server: Telemetria di CPU, memoria, database, coda e servizi.
Definisci la versione del piano con le proprietà non segrete e i dati di test. Registra le versioni di JMeter e Java, la build di destinazione, l'ambiente, il numero di utenti, la fase di avvio e la durata.
Registrazione del traffico HTTPS e dei certificati
Per HTTPS, JMeter genera un'autorità di certificazione temporanea all'avvio del registratore. Importala solo nel browser di test dedicato, registra il sito autorizzato, quindi rimuovila.
- Avviare il registratore di script di test HTTP(S).
- Individua il certificato ApacheJMeterTemporaryRootCA generato.
- Importalo come autorità attendibile nel profilo isolato.
- Registra il percorso HTTPS approvato.
- Rimuovere il certificato al termine dell'operazione.
Il certificate pinning, il TLS reciproco, i browser gestiti, le app per dispositivi mobili e i protocolli di trasporto più recenti possono bloccare l'intercettazione. Non indebolire i controlli di sicurezza in produzione. Utilizza una build di staging, una specifica API o un metodo di acquisizione alternativo approvato.
Correlazione: rendere riproducibile una sceneggiatura registrata
Gli ID di sessione, i token CSRF, lo stato OAuth, le firme delle richieste e gli ID delle risorse cambiano tra un'esecuzione e l'altra. La correlazione estrae un nuovo valore da una risposta e lo sostituisce nelle richieste successive.
- Individua la risposta che per prima contiene il valore dinamico.
- Aggiungi un estrattore JSON, CSS, XPath o espressioni regolari.
- Memorizza il risultato in una variabile JMeter denominata.
- Sostituire i valori hardcoded successivi con il riferimento alla variabile.
- Segnala chiaramente l'errore quando l'estrazione non restituisce alcuna corrispondenza.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
La parametrizzazione fornisce dati utente indipendenti, spesso provenienti da file CSV. La correlazione acquisisce i dati generati dal server durante l'esecuzione. I piani realistici di solito richiedono entrambi.
Troubleshooting
| Problema | Causa probabile | Fissare |
|---|---|---|
| Nessuna richiesta registrata | Proxy errato, registratore arrestato, conflitto di porte o regola di bypass | Conferma host e porta, avvia il registratore e rimuovi le esclusioni di destinazione. |
| Avviso HTTPS | Autorizzazione temporanea mancante o scaduta | Genera un nuovo certificato di registrazione e importalo solo nel profilo di test. |
| Troppo traffico | Estensioni, telemetria, altre schede o modelli generali | Utilizza un profilo pulito e perfeziona i filtri di inclusione/esclusione. |
| Il tentativo di riproduzione del login fallisce | Cookie, token, flusso OAuth o correlazione mancanti | Aggiungi Cookie Manager, estrai i valori dinamici e ispeziona i reindirizzamenti. |
| Il browser sarà offline in seguito | Punta ancora al proxy locale arrestato | Ripristina le impostazioni automatiche o senza proxy. |
| Errore di memoria di JMeter | Listener GUI o archiviazione di risposte di grandi dimensioni | Utilizzare la modalità senza interfaccia grafica e limitare i dati di risposta salvati. |
| Diverso dal browser | JMeter non esegue né renderizza il codice JavaScript della pagina. | Testa le API sottostanti e utilizza gli strumenti del browser per visualizzare le metriche. |
JMeter è uno strumento per la misurazione delle prestazioni dei protocolli. Non è in grado di misurare autonomamente eventi visivi come il Largest Contentful Paint.
DOMANDE FREQUENTI
Cosa ha sostituito il nome del server proxy HTTP in JMeter?
Il componente ora si chiama HTTP(S) Test Script Recorder.
Quale porta del registratore devo utilizzare?
Qualsiasi porta locale non utilizzata va bene. La porta 8888 è comune e il browser deve utilizzare lo stesso valore.
JMeter è in grado di registrare il traffico HTTPS?
Sì, quando il browser di test isolato si fida del certificato di registrazione temporaneo di JMeter.
Perché una sceneggiatura registrata non funziona se riprodotta?
Token dinamici, cookie, flussi di autenticazione, differenze tra host e dati mancanti richiedono spesso correlazione e parametrizzazione.
JMeter è in grado di registrare l'attività di Chrome?
Sì. Configura un profilo Chrome pulito per utilizzare il registratore locale di JMeter.
Devo eseguire i test di carico tramite l'interfaccia grafica di JMeter?
No. Compila ed esegui il debug in modalità GUI, quindi esegui il caricamento in modalità non GUI.
JMeter si comporta come un vero browser?
No. Invia richieste di protocollo ma non genera codice HTML né esegue codice JavaScript del browser.
È sicuro registrare le credenziali di accesso all'ambiente di produzione?
Si consiglia di utilizzare account di staging e di test. L'acquisizione dei dati in ambiente di produzione richiede un'autorizzazione esplicita e una gestione rigorosa delle informazioni riservate.
