JMeter ci permette di mettere sotto stress le nostre applicazioni Web, simulando accessi simultanei basati sulla programmazione concorrente di Java
Quando sviluppiamo un’applicazione Web o, in generale, progettiamo un sito, prima della messa in produzione, dobbiamo porci un quesito fondamentale: come si comporterà la nostra applicazione Web in condizioni di intenso carico?
Per rispondere in modo appropriato a questa domanda possiamo ricorrere a JMeter!
Sapere a priori come l’applicazione si comporterà sotto carico non è semplice, in quanto tutto dipende da una serie di variabili, come il numero simultaneo di accessi, le risorse dedicate all’applicazione e le scelte progettuali utilizzate in fase di sviluppo.
In realtà, c’è un modo per poter mettere sotto stress la nostra applicazione già in ambiente di sviluppo o di test, ricorrendo ad appositi stress test che si basano sulla programmazione concorrente di Java. Ogni thread avviato in Java permette di simulare il comportamento di un utente e di fronte a moltissimi thread possiamo valutare i tempi di risposta dell’applicazione, gli eventuali blocchi e capire se le risorse sono state correttamente dimensionate.
Come dicevamo all’inizio, per eseguire questi stress test utilizzando la piattaforma Java, possiamo ricorrere a JMeter. Si tratta di un tool open source sviluppato dall’Apache Software Foundation e liberamente scaricabile dal sito Web dedicato. Questo strumento ci consente non solo di mettere sotto carico le nostre Web app, ma, con una serie di plugin e script sviluppati da terzi, possiamo anche effettuare test sui database (tramite JDBC), sui server di posta (POP3 o IMAP), sui server Java Enterprise (JEE), sui server LDAP e via discorrendo.
Utilizzare JMeter non è per nulla complicato e serve solo un po’ di manualità IT e una base di conoscenze sistemistiche.
Vediamo come funziona.
JMeter pronto a testare le nostre Web app
Per iniziare a usare JMeter in ambiente Windows, non dobbiamo fare altro che scaricare l’archivio ZIP dal link su indicato, scompattarlo e cliccare due volte sul file jmeter.bat che troviamo nella cartella /bin.
Compare così l’interfaccia grafica di JMeter: si tratta di una GUI spartana, ma semplice da utilizzare e completa dal punto di vista delle opzioni e funzionalità.
Nell’interfaccia è già presente un Test Plan di default, che rappresenta un nodo di testing. Clicchiamo quindi sulla dicitura Test Plan presente nel menu ad albero presente sulla sinistra utilizzando il pulsante destro del mouse e dal menu contestuale scegliamo Add/Threads (Users)/Thread Group.
Qui inseriamo il nome del gruppo di utenti test (Name), il numero di utenti (Number of Threads) che vogliamo simulare e che immaginiamo possano accedere all’applicazione Web in concomitanza, l’intervallo fra le richieste (Ramp-Up period) e il numero di cicli (Loop count – possiamo anche decidere per un numero di cicli infinito selezionando il box Forever). Immaginiamo di impostare 1000 utenti che utilizzano l’applicazione Web contemporaneamente su 300 secondi con due cicli a utente: di fatto impostando così il Thread Group stiamo spalmando 2000 richieste su 300 secondi (ossia una ogni 0.15 secondi).
A questo punto, decidiamo il tipo di azione che ogni utente compirà, ad esempio possiamo impostare una tipica HTTP Request, ossia una richiesta di raggiungibilità della Web app via HTTP. Scegliamo quindi su Add/Sampler/HTTP Request dal menu contestuale che compare cliccando con il pulsante destro del mouse sul Thread Group appena configurato.
Indichiamo tutti i dati richiesti, soprattutto l’indirizzo e la porta a cui la Web app è disponibile ed eventuali parametri aggiuntivi come nome utente e password, specificabili nella tabella Send Parameters With the Request.
JMeter e le differenti modalità di visualizzazione dei risultati dello stress test
Per valutare i risultati del test, facciamo clic con il pulsante destro del mouse su Test Plan e scegliamo Add/Listener/View Results Tree per avere uno schema ad albero dei risultati dello stress test. Possiamo anche aggiungere più visualizzazione differenti del risultato, magari scegliendo un report a dati aggregati (Add/Listener/Aggregate Report) o in formato tabellare (Add/Listener/View Results in Table).
A questo punto, non resta che eseguire il test appena pianificato, cliccando sul menu Run/Start.
Attendiamo che lo stress test sia terminato per valutare i pregi e i diffetti della nostra Web appa sotto carico e per salvare il nostro test plane in vista di un utilizzo futuro, clicchiamo in JMeter su File/Save Test Plan as.