JMeter, Selenium e la simulazione di percorsi utente sul browser – parte 2

Test-di-performance-parte2-strumenti-di-misura

Nel precedente articolo abbiamo parlato di come monitorare le performance di un ERP Web e dell’infrastruttura necessaria. In questo articolo parleremo invce degli strumenti che utilizziamo in Sme.UP LAB per monitorare le performance di Web.UP.

Per lanciare test di performance simulando più utenti contemporanei è stato utilizzato il software jmeter (https://jmeter.apache.org). Grazie a jmeter è possibile eseguire uno o più script diversi su n utenti contemporanei per quanto desiderato.

Gli script lanciati sono stati scritti utilizzando selenium webdriver (https://www.seleniumhq.org/), il quale permette di automatizzare i click fatti su un browser, creando dei percorsi automatici utente. Il browser utilizzato dai test è chrome headless, ovvero la versione di chrome senza interfaccia grafica, meno pesante e quindi più indicata da utilizzare quando devono convivere sulla stessa macchina molte istanze di browser attive.

I risultati dei test di jmeter sono inviati su influxdb (https://www.influxdata.com/), un database time series, ovvero un database i dati vengono storicizzati tenendo conto della data e dell’ora in cui sono stati memorizzati. Tali risultati sono visualizzabili real time attraverso dashboard personalizzate create in grafana (https://grafana.com/), una soluzione opensource appositamente nata per visualizzare dati time series.

Grazie a Selenium è possibile creare i percorsi automatici che si desiderano. Ad esempio un singolo script può essere costituito da una fase di login, alcune operazioni interne (come ad esempio aperture di schede) e una fase di logout. Questo script costituisce un singolo percorso e questo percorso viene fatto girare da Jmeter su un numero n di simulazioni di browser contemporanei.

Jmeter è estremamente personalizzabile. Tra i parametri più conosciuti si citano i seguenti due:

  • è possibile definire un parametro di loop, che indica le volte per cui il percorso utente viene rieseguito una volta terminato. Quindi gli n utenti che effettuano le operazioni sul browser possono ciascuno ripetere il loro percorso per m volte. Il percorso può essere compiuto e ricompiuto potenzialmente anche all’infinito dando un parametro di loop pari a -1.
  • è possibile definire un parametro detto di rampUp che permette di scaglionare gli utenti in modo tale che il carico non si verifichi tutto nel medesimo istante (ipotesi non vicina alla realtà) ma in modo più distribuito nel tempo (ipotesi più vicina alla realtà). Ad esempio con un rampUp di 60 secondi e con 5 utenti contemporanei ognuno di essi partirà scaglionato dopo 12 secondi rispetto al precedente, in maniera tale da aver fatto partire entro i 60 secondi tutti e 5 gli utenti.

Combinando le opzioni di Jmeter è possibile creare test che rispondano a scopi e obiettivi differenti.

Per esempio con un parametro di loop pari a -1 è possibile effettuare dei test di endurance per individuare eventuali problemi di degradazione delle performance nel tempo.

Girando invece vari percorsi di test su n utenti ed un loop limitato è possibile creare dei test di non regressione delle performance. Questo è stato uno dei primi obiettivi di Sme.UP LAB. I test giornalieri sono infatti girati sull’ultima versione di sviluppo del software. In base alle prestazioni originali del software sono state definite delle soglie temporali entro cui Web.UP deve rispondere per non mostrare peggioramenti di performance. Se ciò non avviene la procedura automatica invia delle mail di alert.

dashboard-grafana-jmeter

Dashboard di Grafana per la visualizzazione dei risultati dei test in tempo reale (clicca per ingrandire l’immagine)

dashboard-jenkins-progetto

Dashboard Jenkins del progetto dei test di performance di Web.UP (clicca per ingrandire l’immagine)
A sinistra si vedono le varie esecuzioni dei test. Se il pallino associato a un’esecuzione è rosso significa che l’esito è stato negativo, se è blu positivo. Associati ad un’esecuzione si vedono anche i link ai vari report, tra cui quello di Jmeter su Grafana.

dashboard-performance-trend

Schermata del performance trend plugin di Jmeter integrato in Jenkins (clicca per ingrandire l’immagine)
La tabella oltre a mostrare i tempi medi, minimi e massimi e la percentuale di errori di ogni frammento di percorso mostra i differenziali rispetto alla build precedente. In verde si notano le diminuzioni di tempo, in rosso i peggioramenti.

Jenkins per l’automazione e il link dei report

L’automazione e lo scheduling dei test di performance è gestita dal software Jenkins (https://jenkins.io/), leader nell’automazione delle build, del deploy e del testing dei progetti software scritti con tecnologia java e non solo. E’ Jenkins che opportunamente configurato invoca periodicamente la suite di test. Tramite lo stesso Jenkins è inoltre possibile cliccando un bottone eseguirli quando desiderato. Jenkins può essere integrato con appositi plugin e istruito attraverso diversi linguaggi di scripting. Ad ogni esecuzione dei test di performance di Web.UP è stato ad esempio associato un plugin di Jenkins per la visualizzazione delle statistiche di Jmeter e sono stati inoltre linkati tutti i report di statistiche connessi con i test prodotti da altri software, quali ad esempio quelli di jmeter su grafana.  

Nel prossimo articolo parleremo del processo di Qualità. Vi aspetto!


Chiara Zambelli

Chiara Zambelli
Responsabile CI/CD – Gruppo Sme.UP
My LinkedIn Profile


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *