Misurare le performance dei siti web con Apache JMeter – parte 2

Nello scorso appuntamento abbiamo visto un utilizzo molto basilare di JMeter per verificare le performance del nostro sito; oggi vedremo qualche trucco più avanzato.

Caricamento delle URL da un file CSV

Il metodo che abbiamo utilizzato fin’ora per specificare le URL, ovvero aggiungere dei sampler di tipo HTTP request, non è decisamente scalabile, ovvero al crescere del numero di pagine da testare diventa molto laborioso, prono a errori e… noiosissimo! C’è un modo molto più comodo e facile da realizzare: l’utilizzo di un file di testo (CSV) esterno.

Per prima cosa dobbiamo creare questo file, che chiameremo urls.txt, che conterrà un elenco di URL come questo:

http://www.example.org/node/1
http://www.example.org/node/2
http://www.example.org/node/3

 

Apriamo JMeter, creiamo un nuovo test plan e salviamolo nella stessa directory di urls.txt, aggiungendo un Thread Group come indicato la volta scorsa (Add / Threads / Thread Group), infine inseriamo un HTTP Sampler nel Thread Group (Add / Sampler / HTTP request).

L’unico parametro che cambieremo a HTTP Request sarà Path, dove metteremo questo valore: ${url}. Questo è un riferimento ad una variabile definita da qualche altro elemento nel test plan; la definizione di questa variabile può essere fatta in molti modi: tramite un elemento specifico di configurazione, tramite file di properties, ecc. Noi utilizzeremo il file urls.txt come sorgente di questi valori, per farlo è sufficiente aggiungere un elemento di configurazione di tipo CSV ad HTTP Request: tasto destro, poi Add / Config Element / CSV Data Set Config. Gli unici parametri da specificare saranno:

  • Filename: urls.txt;
  • Variable Names: url.

Per verificare che tutto funzioni è sufficiente aggiungere al test plan un elemento di tipo Listener / View Results Tree, far partire il test (CTRL-R) ed esaminare le richieste e risposte HTTP.

Utilizzo dei Controller

I Logic Controller consentono di controllare l’esecuzione dei test, in base a regole o condizioni particolari.

Il più semplice è il Simple Controller, che funge solamente da contenitore per altri elementi. Controller più interessanti sono:

  • Loop Controller: oltre al numero di loop specificato nel Thread Group, aggiunge il numero ripetizioni indicato nella sua configurazione;
  • Once Only Controller: esegue gli elementi sottostanti una sola volta durante tutto il test, anche il numero di loop indicati nel Thread Group è maggiore di zero. Molto utile ad esempio per pagine di login o di inizializzazione;
  • Random Controller: esegue uno a caso dei nodi sottostanti;
  • Controller logici (if, while, ecc.): eseguono i task in base a delle condizioni logiche.

Combinando insieme questi controller è possibile creare delle vere e proprie test suite complete, capaci di ricreare il comportamento tipico degli utenti e verificare performance e resistenza alle “ondate” del proprio server web.

Links