Menu Chiudi

Come controllare la disponibilità di una applicazione web ?

L’active testing o synthetic testing in sostanza il polling http/https è generalmente molto utile per controllare la disponibilità di un server web o per richiamare una pagina eventualmente anche passando dati alla stessa, ma non è indicato come strumento per verificare il funzionamento di una applicazione nel suo complesso, ove è richiesto di poter interrogare ed interagire con la stessa al fine di inviare dati specifici ed analizzare le risposte conseguenti.

Di fatti si tratterebbe di inviare dati, selezionare sezioni, cliccare su pulsanti e quant’altro, in sostanza interagire con l’applicazione, seppur ripetendo le medesime operazioni all’infinito ed al contempo misurare in modo oggettivo i dati di performance.

Come ottenere tutto ciò che ci consente di poter controllare la disponibilità di una applicazione ?

L’estensione  Selenium IDE, ormai disponibile per tutti i diversi browser, almeno per i principali come : Firefox, Chrome e Edge, fornisce un valido strumento per acquisire le informazioni necessarie alla individuazione delle diverse azioni che vengono richiamate da parte del nostro browser mentre utilizziamo una applicazione web.

La funzione di registrazione ci consente di poter poi analizzare ed esportare le azioni  e decidere come utilizzarle.

E’ possibile rimettere in playback ciò che è stato registrato oppure è altresì possibile esportare i dati acquisiti, manipolarli e creare una applicazione ad esempio in python, con il vantaggio che non solo verranno rieseguiti gli steps applicativi acquisiti ma sarà anche possibile sfruttarli per misurare le prestazioni delle diverse azioni.

A titolo esemplificativo utilizzerò il sito web www.netperf.it.

Verrà richiamato e una volta che la home page sarà stata caricata verrà fatta una ricerca inserendo la parola “riverbed” nel campo di search ed infine verrà selezionato un articolo cliccando sul testo “Alluvio AppResponse – Riverbed”, in questo moto testiamo alcune sezioni del sito web.

Di seguito riporto l’export delle azioni che sono state registrate dall’estensione Selenium IDE.

Se dovessimo rimettere in playback quanto salvato da Selenium IDE, rivedremmo le diverse azioni in sequenza, esattamente come quando le abbiamo eseguite la prima volta durante la fase di registrazione, ma se agissimo in questo modo ed avessimo anche la necessità di controllare le performance dell’applicazione ci servirebbe un ulteriore strumento, ad esempio APM (RUM-JS) come già discusso in altri articoli.

Allora utilizziamo le informazioni in python esportate da Selenium IDE per creare il nostro nuovo script python, mediante il quale effettueremo anche delle misure di performance sfruttando Navigation Timing API per calcolare le performance che ci interessano.

In questo esempio utilizzeremo Firefox come browser, di conseguenza Importiamo ciò che ci serve nello script:

Richiamiamo il nostro sito web e acquisiamo i counters che ci servono

Cioè :

Eseguiamo un po’ di calcoli

Ovvero :

Formattiamo il tutto ed inviamo al nostro parser Logstash che si preoccuperà di inoltrare quanto ricevuto dallo script python all’analytic “OpenSearch”.

Dopo di che eseguiamo il search e carichiamo l’articolo relativo a “Alluvio AppResponse – Riverbed”

Acquisiamo i nuovi counters, facciamo i nuovi calcoli, formattiamo il tutto ed inviamo nuovamente al parser Logstash.

Mettiamo in esecuzione automatica lo script, ogni due minuti e analizziamo i dati.

abbiamo l’APM (RUM-JS) attivo sul server web, possiamo confrontare I dati acquisiti sul server con quanto generato dal nostro script python, ecco ì dati forniti dalla componente APM (RUM-JS) :

Coincidono e per dimostrarlo confrontiamo il picco delle 11:42 :

Analizziamo la transazione di tipo “search” delle 11:42:20

Con APM (RUM-JS) possiamo entrare ulteriormente in profondità nella transazione

Questo è il dettaglio del tracing.

Ecco il contributo dei singoli elementi

Siccome mediante lo script python abbiamo acquisito numerosi counters, possiamo valutare le diverse sezioni della nostra applicazione dal punto di vista delle performance, riporto di seguito alcuni esempi :

Confronto tra il caricamento della home page (operazione identificata come “front_end”) e la ricerca e caricamento di un articolo (identificata come “search”)

Analizziamo il contributo delle diverse metriche alla formazione del Page Load Time

Tramite il Time To First Byte, analizziamo la reattività della nostra applicazione

Possiamo confrontare i tempi di FrontEnd con quelli di BackEnd, così definiti :

BackEnd Processing Time = responseStart – navigationStart
FrontEnd Processing Time = domComplete – responseStart

Possiamo analizzare il contributo delle diverse metriche alla formazione del Browser Time

E così via con ulteriori analisi …

Conclusioni :

Laddove abbiamo l’esigenza di monitorare la disponibilità di una applicazione, anche dal punto di vista del flusso applicativo, ovvero controllare le diverse sezioni che dipendono dai dati inseriti e/o dalla navigazione, Selenium IDE (usato come strumento per acquisire le info necessarie) e uno script python costruito con le informazioni ottenute da Selenium IDE, rappresentano una valida combinazione ed offrono una soluzione in grado di poter fornire anche dati di performance,  grazie all’utilizzo integrato di Navigation Timing API.