lunedì 19 gennaio 2015

Cloud Load Test con Visual Studio Online - parte 1: Web panel

Questo articolo è il primo di una serie di 3 in cui parlerò di Cloud Load Testing con Visual Studio Online.

In questa prima parte affronterò l'esecuzione di test di carico semplici su applicazioni web, utilizzando direttamente le funzionalità messe a disposizione dal portale di VSO.

Introduzione
Prima di iniziare a parlare nello specifico dell'esecuzione dei Cloud Load Test è importante soffermarsi su alcuni aspetti.

  • Per poter utilizzare la funzionalità di Cloud Load Test è necessario avere una sottoscrizione MSDN Ultimate
  • L'applicazione da testare deve essere esposta sul web (al tool va indicato l'url da testare)
  • Gratuitamente si possono utilizzare fino a 15.000 minuti al mese. Si tratta di "virtual user minutes", quindi ad esempio eseguendo 1 test da 2 minuto con un carico costante di 200 virtual user si consumeranno 400 virtual user minutes.


Fatte queste precisazioni, vediamo come si possono eseguire i test di carico utilizzando l'iterfaccia presente sul portale di Visual Studio Online.


Iniziamo
Innanzitutto è necessario fare login al portale web di VSO e, dalla dashboard iniziale scegliere "Load test".


Fatto questo viene proposta la finestra di impostazione delle variabili del test. Come vedete si tratta di un unica schermata, quindi  le impostazioni possibili sono abbastanza limitate, ma comunque sufficienti a fare un test di carico generico sulla nostra applicazione.


Come prima cosa viene chiesto l'url su cui eseguire il test di carico: si tratta di un solo url (quindi non è possibile eseguire da qui un test di carico a step consecutivi o a navigazione pseudo-reale) che può corrispondere all'home page del sito o, come nell'esempio, ad una qualsiasi pagina della web application. L'unico vincolo presente è che la pagina deve essere visibile pubblicamente senza necessità di inserire delle credenziali, visto che al momento non è possibile impostarle.

Il secondo parametro da inserire è il nome del test: si tratta di una stringa libera, che servirà a noi solo come reminder.

Sotto questi due parametri ce ne sono altri 4, indicati proprio come "Test settings", che servono per poter meglio definire gli aspetti chiave del carico che si vuole applicare.

  • User Load: permette di definire il numero di utenti virtuali che contemporaneamente si collegheranno all'url fornito. I valori possibili sono 25, 50, 100 e 200
  • Run duration: è la durata complessiva del test. I valori selezionabili sono da 1 a 5 minuti
  • Think-time: si tratta del tempo di attesa tra una richiesta e l'altra. Serve per evitare che i sistemi di anti-hammering e anti DoS entrino in funzione. È possibile indicare tempi di attesa di 1 secondo (default) o 5 secondi
  • Browser distribution: questa impostazione indica la percentuale di utilizzo di browser che si vuole simulare. Scegliendo ad esempio "IE 80%, Chrome 20%" il test verrà eseguito con agenti useranno gli engine di Internet Explorer e di Chrome nelle percentuali selezionate


Settate queste impostazioni, cliccando sul bottone "Test now" si da inizio al test.


Esecuzione del Test
Ma cosa avviene, nel concreto quando si avvia il test?
Visual Studio Online crea per noi on demand un lab virtuale in un datacenter su Azure e configura gli agenti sulle vm con i parametri indicati:



Non appena il lab è pronto e configurato, inizia il vero e proprio test di carico. Gli agenti iniziano a generare traffico verso l'url indicato e i risultati sono inviati, quasi in real time, al nostro browser. In questo modo possiamo avere un'anteprima dell'esito del test.


In questa immagine vediamo, ad esempio, che intorno ai 50 secondi si è verificato "un buco" nelle richieste al secondo che il sito è risucito a gestire, testimoniato anche dal notevole incremento del tempo di risposta. Utilizzando questi dati potremmo avviare un'attività di analisi sulla nostra applicazione o sulla nostra infrastruttura per capire come mai si sia verificata un'anomalia del genere.


Risultati
Al completamento del test, ci vengono indicati gli esiti e le performance raggiunte.
Oltre al grafico che avevamo anche durante l'esecuzione ci vengono date altre informazioni.


Innanzitutto ci viene data l'indicazione tel tempo di risposta medio. Un tempo medio inferiore a 0,1 secondi è considerato buono. tra 1 secondo e 0,1 secondi è considerato "non molto buono", sopra il secondo è considerato negativo.

Dopo il tempo di risposta, è indicato il numero di richieste che in totale sono state fatte alla web app.

Infine, c'è l'indicazione delle eventuali richieste che non sono andate a buon fine o che hanno generato un errore sull'applicazione.

Sotto questi valori viene indicato anche quali errori sono stati riscontrati.


In questo caso non ve ne sono, se si fossero verificati degli errori nella tabella troveremmo la causa generica dell'errore, il suo tipo specifico ed il messaggio di errore.


Conclusioni
Questo tipo di Load test non è sicuramente il più completo che si possa ottenere, ma va comunque bene se ci interessa avere delle indicazioni di massima sulle prestazioni e sul carico supportato dalla nostra applicazione.
Inoltre il setup di questi test è estremamente semplice e in pochissimi minuti si è in grado di avere un gran numero di informazioni utili.

Se quello di cui avete bisogno, invece, è un test approfondito, eseguibile simulando un flusso reale di navigazione... non perdetevi il mio prossimo articolo di questa serie.