Non importa se un’applicazione software viene sviluppata per gli utenti interni di un’organizzazione, oppure se sarà dedicata ai clienti di un servizio commerciale: oggi, garantire la sua qualità è cruciale per ottimizzare l’efficienza dell’attività di business e la capacità competitiva dell’impresa. Ma qualità non significa soltanto un’applicazione priva di bug e difetti nelle sue funzionalità. Qualità vuol dire anche capacità dell’applicazione di fornire prestazioni soddisfacenti.
Performance Testing: cos’è
Il performance testing è un test di carico che serve a collaudare la qualità del software dal punto di vista delle sue performance in determinate condizioni. Diversamente dal functional testing, il cui obiettivo è verificare che ogni funzionalità o caratteristica del software corrisponda ai requisiti richiesti dagli utenti finali, il performance testing è una strategia di software testing indirizzata a verificare che l’applicazione sia, ad esempio, veloce nei tempi di risposta; efficiente nell’uso della memoria; in fase di elaborazione, di trasmissione dati, di utilizzo della banda di rete; e stabile, anche quando i carichi di lavoro crescono, con picchi di traffico e molte richieste simultanee.
Il performance testing costituisce dunque una metodologia di testing imprescindibile per garantire la qualità del software. Tuttavia, il problema è che in varie realtà imprenditoriali, tradizionalmente, il suo ruolo è ancora valutato di secondaria importanza: si tende pertanto ad eseguirlo soltanto dopo il completamento dei test funzionali, se non addirittura appena prima della distribuzione del software in produzione.
La modalità con cui condurre un test delle prestazioni dipende innanzitutto dagli indicatori di performance selezionati per analizzare l’applicazione in questione; occorre in ogni caso tener conto della configurazione hardware e software dell’infrastruttura, e, se occorre eseguire il test in ambiente di produzione, è anche necessario prevedere meccanismi di protezione, in grado d’impedire che l’attività di test possa in qualche modo rallentare o bloccare i normali processi e la continuità del business. Definite, in funzione dei requisiti di progetto, le metriche di valutazione, si passa alla progettazione dei test, che devono avere la massima copertura, ossia prevedere tutti i possibili casi di utilizzo. Nella preparazione dell’ambiente e degli strumenti di test, un aspetto chiave è anche identificare i tool in grado di ottimizzare il livello di automazione del performance testing.
Performance Engineering, un cambio di paradigma rispetto al performance testing
Come accennato, il performance testing non può essere un processo isolato, e ridotto a un collaudo da farsi solo alla fine, quando l’applicazione è ormai prossima al rilascio: una recente indagine della società di ricerca e consulenza Forrester indica che oltre la metà degli sviluppatori dedica meno di un’ora al giorno per il performance testing del proprio codice. E ciò significa che si dovrà poi perdere tempo prezioso per risolvere problemi di prestazioni che sarebbe stato più semplice ed economico affrontare subito, fin dall’inizio del ciclo di sviluppo. Va anche aggiunto che il tradizionale performance testing, pur essendo ancora adatto negli ambienti di sviluppo che adottano il modello “waterfall”, risulta inadeguato negli odierni ambienti DevOps, che accelerano velocità e frequenza dei rilasci software e sono improntati su pratiche di sviluppo come CI/CD (continuous integration/continuous delivery).
Per risolvere questi inconvenienti, oggi la soluzione si chiama performance engineering: un paradigma in cui, fin dall’inizio, l’applicazione viene progettata tenendo conto delle metriche di valutazione delle performance, e dove l’individuazione e risoluzione di eventuali problemi di prestazioni viene affrontata già nelle fasi iniziali del ciclo di sviluppo. Il performance engineering è in sostanza un processo continuo di testing, monitoraggio e ottimizzazione, integrato in tutte le fasi del ciclo di sviluppo software: dalla progettazione, allo sviluppo, fino all’analisi di come le prestazioni influenzano la user experience. Di conseguenza, nel performance engineering tutti gli stakeholder del progetto, quindi addetti alla quality assurance, performance engineer, analisti di business, sviluppatori, sono chiamati a collaborare e condividere le responsabilità di gestione delle prestazioni dell’applicazione a livello end-to-end.
Quale soluzione scegliere per il performance engineering
Oggi, per eseguire il performance engineering è consigliabile indirizzare la scelta verso una soluzione con un’architettura aperta, e in grado di supportare il testing con ogni protocollo e tipologia di applicazione, in qualsiasi ambiente di sviluppo.
Nel settore, la famiglia LoadRunner, realizzata da Micro Focus, si colloca come una gamma integrata di soluzioni di performance engineering enterprise-grade (LoadRunner Professional, LoadRunner Enterprise, LoadRunner Cloud) utilizzabile da parte di varie tipologie di utenti: dagli sviluppatori ai performance engineer. LoadRunner incorpora inoltre strumenti analitici intelligenti e si integra con i tool DevOps e di application performance monitoring (APM), con l’obiettivo di analizzare, monitorare e ottimizzare le prestazioni del software fin dalle fasi iniziali del processo di sviluppo. LoadRunner supporta un’ampia gamma di protocolli, ed è in grado di eseguire test di carico e stress test, simulando condizioni e traffico di rete in scenari realistici, con applicazioni legacy, siti web e applicazioni mobile. Lo strumento identifica le anomalie ed elabora rapporti dettagliati che aiutano a eliminare, a livello end-to-end, i colli di bottiglia che ostacolano il raggiungimento delle corrette performance.
Le soluzioni LoadRunner sono state utilizzate anche nel progetto di performance engineering di Sky, che aveva l’esigenza di creare un’infrastruttura di performance testing flessibile e dinamica a livello end-to-end, in grado di mantenere il passo con l’adozione del modello di sviluppo Agile. In questa realtà, LoadRunner Enterprise ha permesso di eseguire i test molto più rapidamente di prima, coprendo circa il 95% del performance testing. In aggiunta, le funzionalità di continuous testing di LoadRunner Enterprise consentono oggi a Sky di adattare il testing a un crescente numero di componenti e applicazioni, senza dover incrementare le dimensioni del team di testing.