Apache JMeter
Parametrizzazione di Apache JMeter
Ricerca…
introduzione
La parametrizzazione è la creazione di diversi set di dati per diversi utenti nello stesso script di test. Ad esempio, eseguendo più utenti con credenziali diverse nello stesso script. Questo lo rende uno degli aspetti principali nella creazione di test delle prestazioni.
Parametrizzazione tramite file esterni
Uno dei modi più comuni per parametrizzare gli script delle prestazioni è utilizzare un file CSV. Il miglior esempio di utilizzo dei file di input CSV è un processo di accesso. Se si desidera testare la propria applicazione tra diversi utenti, è necessario fornire un elenco di credenziali utente.
Supponiamo che abbiamo una richiesta di accesso che funziona per un utente specifico:
Possiamo facilmente parametrizzare tale richiesta utilizzando un file CSV esterno e eseguendo lo script tra diversi utenti. Per aggiungere la configurazione di parametrizzazione CSV:
Fare clic con il tasto destro del mouse sulla richiesta di accesso -> Aggiungi -> Config elemento -> CSV Data Set Config
Una breve spiegazione dei parametri "Configurazione set dati CSV":
- Nome: nome dell'elemento che verrà utilizzato nell'albero JMeter
- Nome file: nome del file di input. I nomi dei file relativi vengono risolti in base al percorso del piano di test attivo. Sono inoltre supportati i nomi di file assoluti
- Codifica file - codifica del file di input, se non è la piattaforma predefinita
- Nomi di variabili: elenco di nomi di variabili separate che verranno utilizzati come contenitore per i valori analizzati. Se vuoto, la prima riga del file verrà interpretata come l'elenco dei nomi di variabili
- Delimitatore - delimitatore che verrà utilizzato per dividere i valori analizzati dal file di input
- Consentire dati quotati? - true nel caso in cui si desideri ignorare le virgolette doppie e consentire a tali elementi di contenere un delimitatore.
- Riciclare su EOF? - true nel caso in cui il piano di test del file debba scorrere il file più di una volta. Istruirà JMeter per spostare il cursore all'inizio del file
- Interrompere il thread su EOF? - false in caso di iterazione del ciclo sul file CDC e true se si desidera interrompere il thread dopo aver letto l'intero file
- Modalità di condivisione:
- Tutti i thread: il file è condiviso tra tutti gli utenti virtuali (predefinito)
- Gruppo di thread corrente: il file verrà aperto una volta per ciascun gruppo di thread
- Thread corrente: ciascun file verrà aperto separatamente per ciascun thread
- Identificatore: tutti i thread che condividono lo stesso identificatore condividono lo stesso file
Creiamo un file csv contenente diversi utenti con nomi e password:
Ora possiamo usare questo file con la configurazione del set di dati CSV. Nel nostro caso, è sufficiente aggiungere i valori di configurazione "Nome file" e "Nomi variabili":
L'ultimo passo da compiere è la parametrizzazione della richiesta di accesso con le variabili CSV. Questo può essere fatto sostituendo i valori iniziali con le variabili appropriate dal campo di configurazione "Nomi variabili" della Config Data Set CSV, come questo: Se eseguiamo ora il nostro script di test, JMeter sostituirà queste variabili con i valori del file "TestUsers.csv". Ogni utente virtuale JMeter riceverà le credenziali dalla seguente riga di file csv.
La richiesta di accesso da parte del primo utente:
La richiesta di accesso da parte del secondo utente:
Parametrizzazione tramite database
Un altro modo per parametrizzare gli script delle prestazioni è utilizzare i dati del database tramite JDBC. JDBC è un'interfaccia di programmazione dell'applicazione che definisce in che modo un client può accedere a un database.
Prima di tutto, scaricare il driver JDBC nel database (fare riferimento al fornitore del database). Ad esempio, il driver mysql può essere trovato qui. Quindi, puoi aggiungerlo aggiungendo il file .jar al piano di test usando il modulo seguente:
Ma è meglio aggiungere il file Jar nella cartella lib e riavviare JMeter.
Successivamente, configurare la connessione al database utilizzando l'elemento "Configurazione connessione JDBC". In questo modo: Fare clic con il pulsante destro del mouse su Gruppo di thread -> Aggiungi -> Elemento configurazione -> Configurazione connessione JDBC
Parametri "Configurazione connessione JDBC":
- Nome: nome della configurazione della connessione che verrà mostrata nell'albero del gruppo di thread
- Nome variabile: nome che verrà utilizzato come identificatore univoco per la connessione db (è possibile utilizzare più connessioni e ognuna sarà associata a un nome diverso)
- Numero massimo di connessioni: numero massimo di connessioni consentite nel pool di connessioni. In caso di 0, ogni thread avrà il proprio pool con una singola connessione in esso
- Max Wait (ms) - pool genera un errore se il timeout specificato viene superato durante la connessione db
- Time Between Eviction Runs (ms) - numero di millisecondi da mettere in pausa tra le esecuzioni del thread che evita le connessioni inutilizzate dal pool db
- Auto Commit - sì per attivare il commit automatico per le connessioni db correlate
- Prova mentre inattivo: verifica le connessioni inattive prima che venga rilevata una richiesta effettiva. Ulteriori dettagli: BasicDataSource.html # getTestWhileIdle
- Tempo di inattività minimo min evictable (ms) - periodo di tempo durante il quale una connessione specificata potrebbe essere inattiva nel pool di db prima che possa essere sfrattata. Ulteriori dettagli: BasicDataSource.html # getSoftMinEvictableIdleTimeMillis
- Query di convalida: query di controllo sanitario che verrà utilizzata per verificare se il database continua a rispondere
- URL del database: stringa di connessione JDBC per il database. Vedi qui per gli esempi
- Classe driver JDBC: nome appropriato della classe del driver (specifico per ciascun db). Ad esempio, "com.mysql.jdbc.Driver" per MySql db
- Nome utente - nome utente del database
- Password - password del database (verrà memorizzata non crittografata nel piano di test)
Nel nostro caso abbiamo bisogno di impostare solo i campi obbligatori:
- Nome variabile associato a pool.
- URL del database
- Classe del driver JDBC
- Nome utente
- Parola d'ordine
Il resto dei campi nella schermata può essere lasciato come predefinito:
Supponiamo di archiviare le credenziali dell'utente di test nel database:
Ora, quando viene configurata la connessione al database, è possibile aggiungere la richiesta JDBC e utilizzare la sua query per ottenere tutte le credenziali dal database: fare clic con il pulsante destro del mouse su Thread Group -> Aggiungi -> Esempio -> Richiesta JDBC
Utilizzando la query 'Select Statement' e 'Variable Names' possiamo analizzare la risposta alle variabili personalizzate.
Ora avremo le variabili JMeter che possono essere utilizzate ulteriormente nelle richieste successive. Le variabili specificate verranno create con il suffisso incrementale (email_1, email_2, email_3 ... ..).
Per utilizzare queste variabili nella "Richiesta di accesso", è necessario aggiungere un contatore che verrà utilizzato per accedere ai valori corretti dalla risposta alla query JDBC. Per aggiungere l'elemento "Contatore" in JMeter: fare clic con il pulsante destro del mouse su Thread Group -> Aggiungi -> Config Element -> Counter
Successivamente, possiamo aggiornare la 'Richiesta di accesso' usando la funzione __V. Ciò restituisce il risultato della valutazione di un'espressione di nome di variabile e può essere utilizzato per valutare i riferimenti di variabili annidate:
La configurazione specificata è sufficiente per utilizzare i valori del database per eseguire lo script tra diversi utenti:
Parametrizzazione usando il plugin 'Parameterized Controller'
Se è necessario eseguire una sequenza ripetuta della stessa azione con parametri diversi, utilizzare il plug -in di terze parti 'Parameterized Controller' dal progetto JMeter-Plugins .
È necessario installare questo plug-in prima seguendo la procedura di installazione.
Supponiamo di voler parametrizzare il flusso di lavoro di accesso:
Prima di tutto, è necessario installare il plug-in "Parameterized Controller" poiché non è incluso nel core JMeter. I passaggi di installazione di quel processo possono essere trovati qui.
Spostiamo la "Richiesta di accesso" in un controller separato e disattivatela (fai clic con il pulsante destro del mouse e seleziona "Disattiva"). Questo è il modo più preferibile per disporre di un contenitore di moduli all'interno del piano di test ed evitare l'utilizzo di Workbench come contenitore. Al termine dell'installazione, è possibile aggiungere due controller "Controller parametrizzati" con credenziali utente diverse: fare clic con il pulsante destro del mouse su Thread Group -> Aggiungi -> Logic Controller -> Parameterized Controller
I controller parametrizzati contengono la sezione 'Variabili definite dall'utente', in cui è possibile specificare i parametri. Inserire le credenziali del primo utente nel primo controller parametrizzato e le seconde credenziali utente nel secondo controller parametrizzato.
All'interno di entrambi i controller parametrizzati, aggiungere riferimenti al 'Controller riutilizzabile' per chiamare la 'Richiesta di accesso' con diversi parametri. Può essere fatto in questo modo:
Fare clic con il tasto destro del mouse su "Parameterized Controller" -> "Aggiungi" -> "Logic Controller" -> "Module Controller"
Quando si esegue lo script, si vedrà che la 'Richiesta di accesso' ha attivato ciascuno dei controller parametrizzati separatamente. Può essere molto utile nel caso in cui sia necessario eseguire lo script tra diverse combinazioni di parametri di input.