Apache JMeter: test di carico di un sito passo passo

Apache JMeter: test di carico di un sito passo passo

Apache JMeter è uno strumento di test per server che permette di simulare il comportamento degli utenti sui tuoi siti. Torna molto comodo quando vuoi verificare come regge un sito prima di un evento che farà salire di colpo il traffico (per esempio un e-commerce durante i saldi). È uno strumento open source sviluppato dalla Apache Software Foundation.

Primo utilizzo di JMeter

Sono tutt’altro che un esperto di JMeter e di test di carico, quindi ti mostro passo passo un primo utilizzo di base di Apache JMeter e quello che ne ho capito, lascia pure un commento se hai domande o osservazioni. Iniziamo con un clic destro su Piano di test -> Thread (utenti) -> Gruppo di thread per aggiungere un gruppo di thread: sullo schermo ottieni questo.

JMeter-1024x478.jpg

Azione da intraprendere dopo un errore del campionatore

È l’azione che segue se durante il test si verifica un errore: si continua, si avvia una nuova iterazione, si ferma il thread o si ferma il test, e così via. Per impostazione predefinita lasciamo «Avvia iterazione successiva», cioè JMeter ripete i tuoi passaggi dall’inizio.

Proprietà del gruppo di thread

Seguono le proprietà del gruppo di thread: il numero di thread (che rappresenta il numero di utenti) che si collegheranno al tuo sito, e poi il periodo di ramp-up, cioè il numero di secondi su cui quegli utenti vengono distribuiti. Con 100 utenti e un ramp-up di 10 secondi, al mio sito si collegheranno 10 utenti al secondo. Infine c’è il numero di iterazioni, cioè quante volte ogni thread (utente) ripete lo scenario: se metto 2, un singolo thread percorre lo scenario due volte.

Configurazione dello scheduler

L’avrai già capito: serve a indicare un ritardo o una data per l’avvio del test. Fin qui niente di complicato.

Configurare i valori predefiniti delle richieste HTTP

Devi andare su Piano di test -> Gruppo di thread -> Elemento di configurazione -> Valori predefiniti richiesta HTTP. Non è obbligatorio, ma ti permette di impostare una volta sola il nome di dominio invece di riscriverlo in ognuna delle richieste che aggiungi al gruppo di thread. In questo esempio ho messo il mio blog.

JMeter2-1024x478.jpg

Nota che durante il test JMeter non scarica le tue risorse (css, js, immagini e così via). Per includerle vai su Avanzate e spunta Recupera tutte le risorse incorporate, attenzione però, il test impiegherà molto più tempo.

JMeter3-1024x478.jpg

Aggiungere una richiesta HTTP

Ora puoi aggiungere una richiesta HTTP da Piano di test -> Gruppo di thread -> Campionatore -> Richiesta HTTP. Anche qui le informazioni a schermo sono tante, ma se ti prendi il tempo di leggerle capisci in fretta: nel percorso della richiesta ti basta indicare un percorso relativo, a patto di aver impostato bene il tuo sito nei valori predefiniti richiesta HTTP.

JMeter4-1024x528.jpg

Il timer costante serve solo a indicare una pausa durante la quale il tuo utente fittizio attende (del resto, un visitatore reale resta su una pagina più di 1 secondo).

Registrare uno scenario automaticamente con un proxy

Puoi registrare uno scenario e riprodurlo configurando JMeter perché catturi il tuo percorso su un sito e lo ripeta nei test: così eviti di scrivere lo scenario a mano.

JMeter8.jpg

Per farlo devi impostare JMeter come proxy da Banco di lavoro -> Elementi non di test ->Registratore di script di test HTTP(S). Non dimenticare di avviare il registratore e di puntare il browser su quel proxy nelle sue impostazioni.

JMeter9-300x23.jpg

Poi, sempre nel banco di lavoro, aggiungi un Ricevitore -> Albero dei risultati per visualizzare i dati e poter analizzare i tuoi test.

Conclusione

Ho scoperto Apache JMeter durante un corso e l’ho trovato molto interessante per mettere alla prova le applicazioni web dal lato server e vedere se certe richieste caricano troppo la macchina. Attenzione: per avere test più vicini alla realtà servono più server con un agente JMeter installato su ognuno, così da comandarli a distanza e simulare visitatori sul tuo sito da più punti, i risultati da analizzare saranno molto più interessanti e realistici. JMeter è molto completo e, se se ne presenta l’occasione, penso di scrivere un articolo più approfondito.

···

Damien Flandrin Sviluppatore web dal 2010, creatore di Gekkode e di Email Impact. Ogni articolo è testato su un progetto reale prima della pubblicazione. Contatti
Newsletter

I nuovi test, tutorial e progetti, via e-mail.

Test riproducibili, codice versionato, risultati datati. Mai spam.