JMeter Elementi e componenti: Gruppo di fili, campionatori

โšก Riepilogo intelligente

JMeter Gli elementi sono i mattoni fondamentali di ogni piano di test: i gruppi di thread creano utenti virtuali, i campionatori inviano le richieste, i listener visualizzano i risultati e gli elementi di configurazione forniscono le impostazioni predefinite e i dati necessari a tali richieste.

  • ๐Ÿ”˜ Gruppo di discussione: Ogni thread rappresenta un utente virtuale che gestisce l'applicazione in fase di test.
  • โ˜‘๏ธ Campionatori: Scegli il protocollo della richiesta: FTP, HTTP, JDBC, SMTP e altri.
  • โœ… Gli ascoltatori: Visualizza i risultati sotto forma di grafico, albero, tabella o file di registro.
  • ๐Ÿงช Elementi di configurazione: Imposta valori predefiniti e variabili che i campionatori riutilizzano durante l'intero test.
  • ๏ธ Esecuzione basata sui dati: La configurazione del set di dati CSV fornisce credenziali diverse a ciascun utente simulato.
  • โšก Equivalenti moderni: Il campionatore BSF รจ stato abbandonato; le versioni attuali dello script tramite JSR223 e Groovy.

JMeter Elementi: Gruppo di thread, campionatori, listener ed elementi di configurazione

In cosa consiste Element JMeter?

I diversi componenti di JMeter sono chiamati Elementi. Ogni Elemento รจ progettato per uno scopo specifico.

La figura seguente fornisce alcuni elementi comuni in JMeter e mostra come si posizionano sotto un Thread Group.

JMeter Diagramma gerarchico degli elementi con Thread Group sopra Samplers, Logic Controllers, Listeners, Configuration Elements, Assertions, Timers e Processors

Studiare tutti i componenti in una volta sola รจ un invito alla confusione e alla noia. Qui, discuteremo i componenti indispensabili da conoscere prima di poter iniziare analisi in JMeter.

I componenti rimanenti verranno discussi man mano che saranno utilizzati nei tutorial successivi. Gli elementi trattati in questo tutorial sono elencati di seguito.

Gruppo discussione

Un gruppo di thread รจ una raccolta di thread. Ogni thread rappresenta un utente che utilizza l'applicazione in fase di test. In pratica, ogni thread simula una richiesta reale di un utente al server.

I controlli per un gruppo di thread consentono di impostare il numero di thread per ciascun gruppo.

Ad esempio, se imposti il โ€‹โ€‹numero di thread a 100, JMeter Verranno create e simulate 100 richieste utente al server in fase di test, come illustrato nel diagramma seguente.

Diagramma di un JMeter Gruppo di thread che simula gli utenti da 1 a 100, ognuno dei quali invia una richiesta all'applicazione in fase di test.

Il pannello Gruppo di discussione prevede anche un periodo di avvio graduale, che distribuisce l'avvio delle discussioni nel tempo anzichรฉ avviare tutti gli utenti contemporaneamente.

Campionatori

Come giร  sappiamo, JMeter supporta il test di HTTP, FTP, JDBC e molti altri protocolli.

Sappiamo inoltre che i gruppi di thread simulano le richieste degli utenti al server.

Ma come fa un gruppo di thread a sapere quale tipo di richiesta (HTTP, FTP e cosรฌ via) deve effettuare?

La risposta รจ Campionatori.

La richiesta dell'utente potrebbe essere una richiesta FTP, una richiesta HTTP, una richiesta JDBC e cosรฌ via. La figura seguente elenca i campionatori trattati in questo tutorial.

Elenco dei diagrammi ad albero JMeter campionatori: richiesta FTP, richiesta HTTP, richiesta JDBC, campionatore BSF, campionatore del registro di accesso e campionatore SMTP

Richiesta FTP

Immaginiamo di voler testare le prestazioni di un server FTP. รˆ possibile utilizzare un campionatore di richieste FTP in JMeter per svolgere questo compito. Questo controller consente di inviare una richiesta FTP di โ€œdownload fileโ€ o โ€œupload fileโ€ a un server FTP.

Diagramma che mostra JMeter invio di una richiesta FTP a un server FTP per caricare o scaricare un file

Ad esempio, se si desidera scaricare un file โ€œTest.txtโ€ da un server FTP in prova, รจ necessario configurare alcuni parametri in JMeter come nella figura sottostante.

Pannello di esempio per richieste FTP con ftp.example.com come server, porta 21, Test.txt come file remoto e accesso anonimo.

Il pannello Imposta il server su ftp.example.com, porta 21, il file remoto su Test.txt e l'opzione get(RETR), quindi JMeter invia un comando FTP a quel server e scarica il file.

Richiesta HTTP

Questo campionatore ti consente di inviare una richiesta HTTP/HTTPS a un server web.

Considera l'esempio qui sotto. JMeter invia una richiesta HTTP al Google sito web e recupera da esso file HTML o immagini.

Schema di JMeter invio di una richiesta HTTP a Google Siti e ricezione di HTML e immagini in cambio

Nel tutorial JMeter Test di Performance, spiegheremo meglio questa richiesta HTTP. รˆ il campionatore piรน test di applicazioni web il lavoro si basa su.

Richiesta JDBC

Questo campionatore consente di eseguire il database test delle prestazioni. Invia una richiesta JDBC (una query SQL) a un database.

Schema di JMeter invio di una query SQL a un server di database e ricezione del risultato

Ad esempio, un server di database ha un campo test_result memorizzato in una tabella denominata test_tbl. Si desidera interrogare questi dati dal server di database, quindi รจ possibile configurare JMeter per inviare un SQL Eseguire una query su questo server per recuperare i dati.

Pannello Richiesta JDBC con Tipo di query impostato su Istruzione di selezione e la query select test_result from test_tbl where id = 1

Il tipo di query qui รจ istruzione SELECT e la query recita select test_result from test_tbl where id = 1Un elemento di configurazione della connessione JDBC deve specificare il pool a cui punta il campo Nome variabile.

Campionatore BSF

Questo campionatore ti consente di scrivere un campionatore usando un file BSF linguaggio di scripting.

Ecco un esempio di campionatore BSF in JMeter, con campi per il linguaggio di scripting, i parametri passati allo script e uno script inline o un file di script esterno.

Pannello BSF Sampler con campi per il linguaggio di scripting, i parametri, un file di script esterno e il corpo dello script inline

Nota di deprecazione: la famiglia di elementi BSF รจ stata deprecata a favore degli elementi JSR223 e non appare piรน nel JMeter riferimento del componente. Nelle versioni attuali, utilizzare il Campionatore JSR223 con Groovy, che compila lo script e offre prestazioni di gran lunga migliori sotto carico. Il pannello sopra รจ mantenuto qui perchรฉ i piani di test piรน vecchi lo contengono ancora.

Accedi al campionatore registro

Questo campionatore consente di leggere i log di accesso e generare richieste HTTP. Le voci del log possono essere immagini, HTML, CSS e cosรฌ via.

Pannello di campionamento del registro di accesso che mostra i campi predefiniti relativi a server e porta, la classe del plugin TCLogParser e la posizione del file di registro.

Il campo Parser predefinito รจ org.apache.jmeter.protocol.http.util.accesslog.TCLogParsere il campo Posizione file di registro indica JMeter nel registro che desideri riprodurre.

Campionatore SMTP

Se si desidera testare un server di posta, รจ possibile utilizzare il campionatore SMTP. Questo campionatore viene utilizzato per inviare messaggi di posta elettronica tramite il protocollo SMTP.

Pannello di campionamento SMTP con impostazioni del server, indirizzi di posta, opzioni di autenticazione e sicurezza e impostazioni del messaggio.

Il pannello raggruppa le impostazioni del server, gli indirizzi di posta elettronica, l'autenticazione e le impostazioni dei messaggi, e visualizza le porte predefinite accanto al campo Porta: SMTP 25, SSL 465 e StartTLS 587.

Gli ascoltatori

I listener mostrano i risultati dell'esecuzione del test. Possono presentare i risultati in diversi formati, come ad esempio una struttura ad albero, una tabella, un grafico o un file di log.

Diagramma che mostra un Listener che visualizza i risultati in grafici, alberi, tabelle e report.

Migliori Risultati del grafico Il listener visualizza i tempi di risposta del server su un grafico, con il numero di campioni, la media, la deviazione standard, il throughput e la mediana stampati al di sotto.

Il listener Graph Results traccia i tempi di risposta con dati, media, mediana, deviazione e serie di throughput.

Visualizza l'albero dei risultati Mostra il risultato di ogni richiesta dell'utente in formato HTML di base, con una scheda "Risultati del campionatore" che riporta tempo di caricamento, latenza, dimensioni e codice di risposta.

Visualizza il listener dell'albero dei risultati con un elenco di richieste a sinistra e la scheda dei risultati del campionatore che mostra il codice di risposta 200

Visualizza i risultati nella tabella Mostra un riepilogo del risultato del test in formato tabellare, una riga per campione.

Visualizza i risultati in un listener di tabella con colonne per numero di campione, ora di inizio, nome del thread, etichetta e ora di campionamento.

Un file di registro registra lo stesso riepilogo del testo, che รจ ciรฒ che si conserva quando un test viene eseguito senza l'interfaccia grafica.

Elenco riepilogativo aggregato del registro con le etichette dei campionatori, il numero di campioni, le medie e una riga TOTALE.

migliori pratiche: I listener GUI consumano memoria e falsano i risultati, quindi esegui i test di carico reali in modalitร  non GUI e apri il file dei risultati salvato in seguito.

Elementi di configurazione

Gli elementi di configurazione impostano valori predefiniti e variabili che verranno utilizzati in seguito dai campionatori.

La figura seguente mostra alcuni elementi di configurazione comunemente utilizzati in JMeter.

Diagramma ad albero di JMeter Elementi di configurazione: Configurazione set di dati CSV, Gestore cookie HTTP, Elemento di configurazione di accesso, Impostazioni predefinite richiesta HTTP e Impostazioni predefinite richiesta FTP

Configurazione set di dati CSV

Supponiamo di voler testare un sito web con 100 utenti che accedono con credenziali diverse. Non รจ necessario registrare lo script 100 volte. รˆ possibile parametrizzare lo script per inserire credenziali di accesso diverse. Queste informazioni di accesso (ad esempio, nome utente e password) possono essere memorizzate in un file di testo. JMeter Contiene un elemento che consente di leggere diversi parametri da quel file di testo. Si chiama "CSV Data Set Config" e viene utilizzato per leggere le righe da un file e suddividerle in variabili.

JMeter Struttura ad albero del piano di test con configurazione del set di dati CSV selezionata sotto un controller di accesso insieme alle impostazioni predefinite della richiesta HTTP.

Questo รจ un esempio di dati CSV. Si tratta di un file di testo che contiene i nomi utente e le password utilizzati per accedere al sito web di destinazione.

File di testo csv_data.txt contenente quattro righe separate da virgole con i valori di nome utente, password e lunghezza del cookie.

Gestore dei cookie HTTP

Cerchiamo di capirlo con un esempio.

Hai utilizzato il tuo browser (Firefox, Chrome e cosรฌ via) per navigare www.google.com.

Accedi con il tuo nome utente e la tua password.

Il tuo nome utente e la tua password verranno memorizzati sul tuo computer sotto forma di cookie.

La prossima volta, quando verrai a trovarci www.google.comNon รจ necessario effettuare nuovamente l'accesso, perchรฉ il browser utilizzerร  i cookie come dati utente per accedere.

Il gestore dei cookie HTTP ha la stessa funzionalitร  di un browser web. Se si effettua una richiesta HTTP e la risposta contiene un cookie, il gestore dei cookie memorizza automaticamente tale cookie e lo utilizza per tutte le richieste future a quel particolare sito web.

Default richiesta HTTP

Questo elemento ti consente di impostare i valori predefiniti utilizzati dai controller della richiesta HTTP.

Per esempio,

Stai inviando 100 richieste HTTP al server google.com.

Per ogni richiesta, dovresti inserire manualmente il nome del server google.com.

In alternativa, รจ possibile aggiungere un singolo elemento HTTP Request Defaults con il campo "Nome server o IP" impostato su google.com, come mostrato di seguito.

Pannello Impostazioni predefinite richiesta HTTP con google.com come nome server, porta 80 e timeout di connessione e risposta.

Non c'รจ bisogno di digitarlo 100 volte. Questo elemento verrร  spiegato in dettaglio nel tutorial. JMeter Test di Performance.

Elemento di configurazione di accesso

L'elemento Login Config consente di aggiungere o sovrascrivere le impostazioni di nome utente e password nei campionatori.

Ad esempio, si desidera simulare l'accesso di un utente al sito web. www.facebook.com con un nome utente e una password. รˆ possibile utilizzare l'elemento Login Config per aggiungere questa impostazione di nome utente e password in una richiesta utente.

Pannello di configurazione dell'elemento di accesso con guru99 inserito come nome utente e un campo password mascherato

L'elemento di configurazione di accesso rispetto alla configurazione del set di dati CSV

Elemento di configurazione di accesso Configurazione set di dati CSV
Utilizzato per simulare l'accesso di un utente Utilizzato per simulare accessi multipli da parte di piรน utenti.
Adatto solo per i parametri di accesso (nome utente e password) Adatto per un gran numero di parametri

Insieme, questi due elementi coprono quasi ogni scenario di credenziali che si incontra in strumenti di test delle prestazioni lavoro.

DOMANDE FREQUENTI

Racconta JMeter Quanto tempo occorre prima che tutti i thread siano in esecuzione? Dieci thread con un tempo di avvio di 100 secondi iniziano a intervalli di dieci secondi. Un tempo di avvio troppo breve sovraccarica il server e produce errori che nessun utente reale causerebbe mai.

I timer inseriscono una pausa tra le richieste in modo che il carico simulato assomigli alla navigazione reale anzichรฉ a un flusso eccessivo. Le asserzioni verificano ogni risposta, contrassegnando un campione come non riuscito quando il codice di stato, il testo o la durata non corrispondono a quanto specificato.

Raggruppano e diramano le richieste al loro interno. Un Loop Controller ripete i suoi elementi figli, un If Controller li esegue in modo condizionale e un Transaction Controller riporta l'intero gruppo come un singolo passaggio temporizzato nei risultati.

No. I listener come View Results Tree memorizzano in un buffer ogni campione e distorcono i numeri che riportano. Esegui il test in modalitร  non grafica, scrivi i risultati in un file, quindi carica quel file in un listener al termine dell'esecuzione.

Gli elementi di configurazione e i pre-processori vengono applicati per primi, poi viene eseguito il campionatore, quindi i post-processori, le asserzioni e i listener. Anche l'ambito รจ importante: un elemento posizionato a livello di piano si applica a ogni richiesta sottostante.

รˆ utile per individuare schemi ricorrenti. Fornire un file di risultati a un assistente permette di individuare le etichette piรน lente, i cluster di errori e le tendenze dei tempi di risposta molto piรน rapidamente rispetto alla lettura delle righe. Confermare sempre il risultato confrontandolo con i campioni grezzi prima di agire.

Sรฌ. Fa bozze. Groovy per estracvalori di ting, creazione di payload e impostazione di variabili all'interno di un elemento JSR223. Controlla ogni suggerimento, perchรฉ spesso fa riferimento all'API BeanShell deprecata o a variabili che JMeter non espone.

Un gruppo di thread e un campionatore. Tutto il resto รจ opzionale. In pratica, viene aggiunto un listener per visualizzare i risultati e, quando gli stessi valori iniziano a ripetersi tra le richieste, vengono aggiunti valori predefiniti o un file di dati.

Riassumi questo post con: