Prestazioni
sempre al top


Alcuni fattori che influenzano significativamente l’usabilità di un applicativo web, non sono verificabili monitorando l’esperienza del suo utilizzo da parte di persone fisiche, ma richiedono, per esempio, di simulare l’accesso di un grande numero di utenti simultaneamente. Gli utenti che accedono ad un sito web, in tal caso, utilizzano dispositivi diversi fra loro e si allacciano a reti con caratteristiche diverse fra loro (che ad esempio differiscono per larghezza di banda o latenza).

I test di performance assicurano il corretto funzionamento dell’applicativo, anche in situazioni di particolare criticità; vengono svolti tramite diversi tools che sottopongono l’applicativo a vari tipi di stress e misurano le prestazioni sia dell’applicativo stesso, sia del dispositivo client (tipicamente un browser) che accede ai contenuti.

Il test di performance è un’attività di test eseguita per valutare le prestazioni di un sistema in termini di reattività e stabilità con un determinato livello di carico. Il test ha lo scopo anche di investigare, misurare, validare e verificare altri attributi di qualità del sistema come la scalabilità, l’affidabilità, l’utilizzo delle risorse e di rilevare malfunzionamenti che impattano i requisiti di prestazioni del sistema. I test di performance sono di supporto ad attività di gestione per il dimensionamento e tuning del sistema:
  • Capacity Management: per garantire che le attuali risorse forniscano le più alte prestazioni (tuning risorse esistenti)
  • Capacity Plan: per garantire che adeguate risorse soddisfino future esigenze (acquisto nuove risorse)
L’attività di test viene svolta in 5 fasi distinte, al completamento di ognuna di queste vengono prodotti uno o più Deliverables che riassumono i risultati ottenuti.
Al termine dell’intera attività viene rilasciato un Test Report contenente l’analisi dei risultati e delle misure prese durante l’esecuzione dei test. La tabella sotto mostra le fasi previste e gli oggetti Deliverables conclusivi di ogni fase.

FASE DELIVERABLE
1 - Project Assessment Assessment report
2 - Pianificazione Test Plan
3 - Implementazione Test script Test Script
4 - Esecuzione Test Report sintetico, Scenario di test
5 - Analisi dei risultati e reporting Test report, presentazione dei risultati
Per un’analisi completa dei risultati del test, durante l’esecuzione, vengono misurate delle metriche relative alle caratteristiche di performance del sistema o dell’applicazione oggetto di test:
  • network-specific metrics Informazioni sull’efficienza della rete, includono routers, switches e gateways.
  • system-related metric Informazioni sull’utilizzo delle risorse del server come processore, memoria, disk I/O e network I/O.
  • platform-specific metrics Informazioni sulla piattaforma su cui viene effettuato il deploy della applicazione (es: jvm, tomcat, glassfish, jboss)
  • application-specific metrics Informazioni di performance relative alla applicazione (contatori e time-stamp custom inseriti nel codice, profiler probe...)
  • service-level metrics Informazioni circa il throughput e il response time complessivo
  • business metrics Informazioni sulle performance a livello di business (es: il numero degli ordini in un dato timeframe)
Durante l’esecuzione del test di performance ci avvaliamo di strumenti di APM (Application Performance Management) per il monitoraggio del sistema e delle transazioni, per l’investigazione di problemi riscontrato ed il relativo troubleshooting e per le analisi delle metriche raccolte.
L’esperienza fatta su questa tipologia di test ci ha resi consapevoli dell’importanza fondamentale di iniziare con una fase di assessment formale del progetto, che garantisca di definire in maniera ottimale le strategie da adottare per il test.
La fase di Project Assessment inizia con una raccolta di informazioni necessarie allo svolgimento del test. Vengono raccolti e analizzati i requisiti, i dati per definire il carico (workload) se già esistenti e viene studiata l’architettura del sistema da testare. Lo scopo è quello di definire gli obiettivi del test e in base a questi questi decidere gli approcci e le tecniche di test da utilizzare.
In questa fase si decidono anche quali metriche dovranno essere raccolte durante il test e quali sono gli acceptance criteria da utilizzare; si dimensiona l’ambiente di test necessario all’esecuzione dei test definiti e si definiscono i tools da utilizzare sia per la generazione del carico che per il monitoraggio del sistema oggetto di test.
Al termine dell’assessment, il risultato è riassunto in un report che contiene i seguenti punti:
  • obiettivi del test di performance
  • proposta di strategie e tecniche di test
  • metriche e acceptance criteria
  • workload e funzionalità da sollecitare
  • tools da utilizzare e dimensionamento ambiente di test
  • prerequisiti e assunzioni
La fase di esecuzione dei test prevede anche le riesecuzioni a seguito di fixing delle anomalie riscontrate o del tuning del sistema a seguito di risultati insoddisfacenti. Al termine di ogni esecuzione del singolo test, viene prodotto un report sintetico dei risultati che riassume lo scenario del test, i principali risultati ottenuti dal test, l’andamento grafico, i valori statistici delle metriche osservate durante il test e le anomalie rilevate. Lo scopo del documento è di fornire i risultati di dettaglio entro un breve tempo rispetto all’esecuzione del test e di indirizzare ad ogni esecuzione le anomalie riscontrate. L’attività di test di performance termina con la redazione di un test report complessivo, contenente tutti i risultati di rilievo ottenuti durante i test eseguiti e finalizzato - oltre che a mostrare i risultati complessivi dell’intero processo - anche a dare evidenza del miglioramento delle performance del sistema ottenuto dall’attività svolta.

Le nostre tecniche per testare le performance