Testare e profilare applicazioni web è una attività davvero semplice, infatti sono disponibili molti strumenti, alcuni dei quali anche open source, per svolgere questo compito.
La procedura da seguire varia in funzione del tipo di attività che si vuole eseguire e che individuamo in quattro tipologie:
Se l'applicazione che vogliamo sottoporre a test esiste già o ha una interfaccia utente già definita mediante un prototipo statico, l'attività di creazione del test è davvero banale:
Se il nostro obiettivo è quello di creare una suite di test funzionali o di non regressione possiamo istruire JMeter per utilizzare una certa serie di parametri oppure di verificare mediante regular expression che l'output restituito contenga una determinata stringa.
Se il nostro obiettivo è quello di effettuare un test prestazionale o una profilatura allora dovremo chiedere a JMeter di eseguire il test in multiutenza ovvero come se si molti computer si connettessero contemporaneamente all'applicazione oltre che di raccogliere le informazioni statistiche di cui abbiamo bisogno.
Gli accorgimenti che suggerisco di seguire sono i seguenti:
La procedura da seguire varia in funzione del tipo di attività che si vuole eseguire e che individuamo in quattro tipologie:
- test funzionali, utili per verificare che l'applicazione risponda ai requisiti
- test di non regressione, utili per evitare di introdurre errori durante la manutenzione evolutiva
- test di performance, o stress test, per individuare i limiti imposti dall'accoppiata hardware e software
- profilatura per l'individuazione di colli di bottiglia e di punti di memory leak
Se l'applicazione che vogliamo sottoporre a test esiste già o ha una interfaccia utente già definita mediante un prototipo statico, l'attività di creazione del test è davvero banale:
- si lancia JMeter e si crea nel Workbench un elemento di tipo HTTP Proxy Server che utilizzeremo per registrare le attività che svolgeremo all'interno del nostro browser
- si lancia il browser preferito e si passa alla configurazione dei parametri di rete per fare in modo che utilizzi JMeter (127.0.0.1:8080) come se si trattasse di un server proxy
- si attiva, non necessariamente sulla macchina locale, l'applicazione web che vogliamo sottoporre al test
- utilizziamo il nostro web browser per navigare all'interno dell'applicazione avendo cura di eseguire tutte le attività che vogliamo sottoporre al test
Se il nostro obiettivo è quello di creare una suite di test funzionali o di non regressione possiamo istruire JMeter per utilizzare una certa serie di parametri oppure di verificare mediante regular expression che l'output restituito contenga una determinata stringa.
Se il nostro obiettivo è quello di effettuare un test prestazionale o una profilatura allora dovremo chiedere a JMeter di eseguire il test in multiutenza ovvero come se si molti computer si connettessero contemporaneamente all'applicazione oltre che di raccogliere le informazioni statistiche di cui abbiamo bisogno.
Gli accorgimenti che suggerisco di seguire sono i seguenti:
- raccogliere sempre in un unico punto i parametri relativi al server che si va a testare, così da non dover modificare tutta la suite di test nel caso si dovesse ripetere il test sulla stessa applicazione deployata su un altra macchina
- attivare la gestione della sessione attraverso cookies o attraverso url rewriting
- definire sempre un listener per verificare le attività svolte dal tool
- inserire un eventuale processo di autenticazione (login) in un controller che lo esegua solo la prima volta
- definire eventuali liste di parametri comuni a più richieste all'interno dell'apposito elemento di configurazione