Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Test con JMeter

Utilizzare JMeter per testare non solo il Web server, ma soprattutto i Web service e una base di dati
Utilizzare JMeter per testare non solo il Web server, ma soprattutto i Web service e una base di dati
Link copiato negli appunti

Negli ultimi articoli ci siamo occupati di descrivere un'applicazione molto utile per la configurazione dei piani di test, JMeter. Abbiamo visto una panoramica sulle funzionalità che essa propone e qualche accenno teorico alla definizione dei test di carico su un application server. In questo articolo ci occuperemo di approfondire l'argomento mostrando come utilizzare JMeter per testare non solo il Web server, ma soprattutto i Web service e una base di dati.

Grazie agli strumenti messi a disposizione, infatti, l'applicazione consente di elaborare piani di test molto più complessi di semplici pagine Web (seppure il progetto parte proprio come strumento per testare il Web server).

Test Web application

Per capire bene l'idea che fa nascere l'esigenza di testare una Web application, vediamo un caso reale. La maggior parte delle volte, quello che vogliamo testare è la velocità di risposta di un Web server in particolari situazioni di traffico, ad esempio un picco di accesso al login di una Intranet aziendale (1.000 o più dipendenti che effettuano il login tra le 8:00 e le 8:05).

Attraverso JMeter, vediamo come sia possibile simulare questa situazione. Le entità che citeremo (Thread Group, Sampler, Listener, ...) sono spiegate nel dettaglio nel precedente articolo.

La principale entità che definiamo è il Thread Group, che rappresenta il gruppo di richieste simulanee:

Figure 1. Creazione di un Thread Group

Creazione di un Thread Group

Per aggiungere un nuovo gruppo, selezioniamo "add Thread Group" dal menu di Test Plan. Ad esso gli diamo un nome e lo configuriamo secondo il nostro test, settando il numero di operazioni concorrenti (users), 1000 nel nostro caso e il tempo entro cui farle partire tutte (300 secondi, cioè 5 minuti nel nostro caso). Infine definiamo il numero di cicli (loop count) che devono essere effettuati (noi ne effettuiamo 2) oppore settiamo il flag per un ciclo infinito. Di fatto stiamo spalmando su 300 secondi 2*1000 richieste (una ogni 0,15 secondi).

Per fare ciò aggiungiamo dal pannello del Thread Group un elemento Sampler, un HTTP Request, che rappresenta la chiamata ad una pagina Http:

Figure 2. Creazione di un Sampler HTTP Request

Creazione di un Sampler HTTP Request

Oltre al nome, ogni richiesta deve definire il server e il numero della porta a cui il servizio Web risponde (intranet.application:8080, nel nostro caso). Segue la definizione del protocollo (http, come default) e il metodo (get o post). Infine il percorso della pagina Web da testare (login.jsp).

A questo punto la configurazione potrebbe essere terminata, se non avessimo la necessità di definire dei parametri (utilizzati dalla pagina login.jsp). Facilmente li aggiungiamo con il pulsante Add, specificando la coppia nome/valore. Interessante notare come sia possibile includere come parte della http request anche un valore complesso definito in un file (che specifichiamo aprendo la finestra di dialogo).

Come avete avuto modo di vedere ci sono decine di sampler che vi consentono di effettuare diverse tipologie di test. Il relativo modo di utilizzo è altrettanto semplice e intuitivo, quindi utilizzate questi strumenti per ogni vostra specifica esigenza. A seguire, potremmo aggiungere altre attività al nostro gruppo di thread, in modo da simulare un comportamento utente più complesso.

Ultimo elemento che ci serve è quello per misurare le prestazioni, quindi aggiungiamo (dal pannello del thread group) un Listener. Esistono anche qui decine di diverse tipologie di listener, alcuni che ci mostreranno il riassunto in forma tabellare, altri in forma grafica. Il più semplice è il Summary report, che mostra in forma tabellare i risultati dell'esecuzione.

Figure 3. Creazione di un Listener

Creazione di un Listener

Nell'immagine d'esempio vediamo il risultato temporaneo di una generica esecuzione, errori, throughput, medie varie, ecc. Ogni listener vi darà dati più o meno dettagliati.

Test Web service

Dei diversi Sampler presenti, sicuramente quello citato nel paragrafo superiore è il più interessante, per ovvie ragioni di utilizzo. Vediamo qualche altro esempio. Utilizzando architetture SOA avrete senz'altro l'esigenza di "stressare" i vostri Web service, e JMeter ve ne da la possibilità con il sampler WebService (SOAP) request.

Figure 4. Creazione di un WebService Request

Creazione di un WebService Request

A differenza del sampler precedente questo fa tutto da solo caricando l'URL WSDL. Automaticamente i parametri di configurazione verranno caricati dalla lettura del WSDL, a voi non vi resta che scegliere il metodo WebMethods che si caricherà con i metodi esposti dal WSDL.

L'operazione successiva è quella di costruire il messaggio XML SOAP di request, oppure definire un file che ne contenga la sua sintassi (come in questo caso). Il resto delle operazioni è identico. Anzi, in questo caso vi suggerisco di utilizzare il Listener "View Result Tree" che vi da la possibilità di navigare i messaggi SOAP di richiesta e di risposta.

Test Database

Oltre a effettuare test di carico su Web application, un altro interessante uso che può essere fatto di JMeter è per stressare le connessioni sui database. Per configurare un test su un database dovremo utilizzare il Sampler JDBC request, preceduto però da un altro elemento per definire la configurazione del database.

Aggiungiamo tale elemento al Thread, questa volta selezionando tra gli elementi Config, JDBC Connection Configuration.

Figure 5. Creazione di una configurazione JDBC

Creazione di una configurazione JDBC

Definiamo opportunamente i parametri di configurazione, il cui significato si intuisce dalle etichette. A questo punto abbiamo pronta una connessione chiamata MyConnection che si riferisce al database in oggetto. A partire da questa possiamo inserire uno o più Sampler JDBC request, che rappresentano le query SQL al nostro database.

Ognuna di essa si presenta come di seguito:

Figure 6. Creazione di un JDBC Request

Creazione di un JDBC Request

Il nome della connessione identifica quale di esse utilizzare (quella creata nella precedente configurazione), dopodiché potrà essere selezionato il tipo di query e nel pannello potremo definire la stessa query (select, update, call, ecc) da effettuare.

Attraverso questo strumento possiamo comprendere quanto realmente la base di dati influisca sulle performance dell'applicazione e come poterla dimensionare correttamente.

Conclusioni

In questo articolo abbiamo visto alcune delle innumerevoli opportunità che JMeter ci permette di testare, facendo vedere alcuni esempi concreti. Questa applicazione è indipendente dal servizio di cui vogliamo misurare le prestazione, ma abbiamo detto può essere integrata all'interno della suite di test di una Web application java based attraverso le API esposte.

Ti consigliamo anche