Il testing delle prestazioni fa risparmiare alle aziende milioni di dollari. Secondo un rapporto di Dun & Bradstreet, il 59% delle aziende Fortune 500 sperimenta almeno 1,6 ore di inattività ogni settimana. Facciamo un rapido calcolo. In media, una società Fortune 500 impiega 52.810 persone. Se ogni dipendente guadagnasse solo $10 l’ora, ciò costerebbe all’azienda $528.100 a settimana in produttività persa – ovvero $27.461.200 all’anno.
È una quantità di denaro enorme che semplicemente... scompare.

È nell’interesse di tutti che il testing delle prestazioni del software sia eseguito in modo scrupoloso. Esploriamo quindi l’importanza del performance testing, i diversi tipi esistenti, i problemi più comuni e gli strumenti utili.
Cos'è il Performance Testing?
Il performance testing verifica che il software sia in grado di funzionare ad alti livelli sotto il carico di lavoro atteso. Gli sviluppatori vogliono evitare di creare software reattivo e veloce quando è collegato solo un utente, ma che diventa lento in caso di più utenti.
Il testing QA non si occupa solo di bug. Anche la velocità, la reattività e l'utilizzo delle risorse del software sono aspetti importanti. Il performance testing si concentra sull'identificazione e la risoluzione dei colli di bottiglia. Questi vengono individuati simulando il traffico degli utenti. Idealmente, i tester QA desiderano eseguire i test delle prestazioni in condizioni che riflettano il mondo reale. È uno dei primi viaggi del software fuori dal porto delle condizioni ideali, diretto nel mondo incerto dell’esperienza degli utenti finali.
Perché Dovrei Testare le Prestazioni?
Fornisce agli stakeholder informazioni concrete sulla velocità, sulla stabilità e sulla scalabilità del software. Senza il performance testing, il software rischia di incorrere in problemi di velocità e affidabilità al momento del rilascio.
Abbiamo già citato il costo in termini di produttività quando un sistema va in crash. In molti casi, solo questa sarebbe una ragione sufficiente. Benché non tutto il software sia usato internamente, spesso viene fornito e venduto ai clienti. In questo scenario, il performance testing diventa ancora più cruciale perché l’ultima cosa desiderata è una folla di clienti insoddisfatti della qualità del prodotto.
Nella fase di sviluppo, il performance testing offre un quadro più chiaro di cosa deve essere migliorato in termini di velocità, stabilità e uso delle risorse. Senza di esso, il software potrebbe essere rilasciato con diversi errori gravi: tempi di esecuzione lenti con più utenti, crash dovuti a sovraccarico, esperienza utente incoerente su diversi sistemi operativi e browser.
Testare solo i bug non darà un quadro completo di come il software si comporterà sotto carico. È importante che il performance testing venga condotto indipendentemente e con lo scopo principale di trovare colli di bottiglia. I bravi tester sanno che la velocità non è l’unico indicatore di prestazioni. Ad esempio, un’applicazione che si carica velocemente ma usa il 100% della CPU dell’utente non è performante. Un caso simile causerebbe molti problemi all’utente finale, come surriscaldamento, ridotta durata della CPU, rallentamenti su più applicazioni e crash occasionali.
Come Si Fa il Performance Testing
Come si effettua il performance testing dipende dal software. Esistono diversi approcci tra cui un tester QA può scegliere. È un tipo di testing non funzionale, cioè si interessa poco dell’interfaccia utente.
I tester delle prestazioni vogliono assicurarsi che i componenti interni siano ottimizzati al massimo. Sono come il team di box in una gara di F1.

Il tipo di test effettuato dipenderà dalla metodologia adottata dall’organizzazione. Se si segue l'approccio tradizionale a cascata per lo sviluppo software, probabilmente i performance tester non metteranno mano al prodotto fino al termine dello sviluppo. Se invece si utilizza la metodologia agile, allora il performance testing agile verrà probabilmente svolto durante tutto il processo di sviluppo.
Tipi di Performance Testing
Alcuni richiedono test manuali, altri test automatizzati, anche se con l’aumento rapido dell’automazione e lo sviluppo costante di strumenti più efficaci e affidabili, c’è una notevole preferenza per il testing automatico in queste situazioni perché serve simulare molti utenti virtuali che utilizzano il software come se fossero utenti reali. Replicare questo manualmente sarebbe difficile e richiederebbe molti più tester di quanti il team probabilmente possa avere.
Solo perché gran parte del performance testing viene gestito dalle macchine, non significa che non siano importanti le distinzioni fra i tipi di test. Un tester QA deve capire i diversi tipi di performance testing per scegliere lo strumento migliore per ogni esigenza.
Scomponiamo le diverse tipologie di performance testing e quale obiettivo persegue ciascun test.
Capacity Testing
Valuta quanti utenti il sistema può gestire prima che le prestazioni scendano sotto livelli accettabili. Testare la capacità del software aiuta gli sviluppatori ad anticipare i problemi in termini di scalabilità e futura crescita della base utenti.
Load Testing
Conferma che il sistema può gestire il numero richiesto di utenti continuando a operare con un elevato livello di prestazioni. Gli strumenti di test di carico garantiscono che non ci siano problemi di performance nella gestione quotidiana.
Test di Volume
Verifica che il software sia in grado di gestire e processare una grande quantità di dati contemporaneamente senza interrompersi, rallentare o perdere alcuna informazione.
Stress Test
Cerca intenzionalmente di mandare in crisi il software simulando un numero di utenti che supera di molto le aspettative. Il giorno del lancio di un nuovo iPhone e il picco improvviso di accessi sul sito Apple sono un ottimo esempio di stress test nel mondo reale.
Test di Soak
Simula traffico elevato per un periodo prolungato. Controlla la capacità del software di tollerare lunghi periodi di carico elevato.
4 Problemi di Prestazione Comuni
Chi si occupa di test delle prestazioni incontra tipicamente almeno uno di questi quattro problemi durante i test.
- Tempo di caricamento lungo – Nessuno si diverte a fissare lo schermo per 30-60 secondi aspettando che un'applicazione si avvii. È noioso, soprattutto se si tratta di un'app che si apre più volte al giorno. Tranne alcuni software particolarmente complessi, la maggior parte delle applicazioni, pagine web e programmi dovrebbe aprirsi in pochi secondi. I test di caricamento rilevano spesso qualsiasi software che fatica ad aprirsi entro un tempo accettabile.
- Tempo di risposta scadente – Simile al problema dei tempi di caricamento lunghi. È altrettanto frustrante quando, dopo aver finalmente aperto l'app, anche la navigazione tra i menu o l'inserimento dei dati richiede 30-60 secondi per essere completato. Pensa alle applicazioni che usi ogni giorno: quante ti fanno attendere a lungo per caricare una pagina? Probabilmente molto poche. Tempi lunghi fanno perdere interesse agli utenti.
- Scarsa scalabilità – Questo problema è chiamato anche ‘effetto slashdot’ o ‘abbraccio mortale di Internet’. Ti è mai capitato di sentire parlare di un sito interessante condiviso su Facebook, e quando ci hai cliccato sopra la pagina non si apriva? Questo accade perché tu e altri milioni di utenti volevate visitare quel sito e non aveva l'infrastruttura per gestire un improvviso afflusso di utenti. Un grafico del traffico di quel sito apparirebbe così:

4. Collo di bottiglia – Il collo di bottiglia si verifica quando un sistema gestisce male la propria potenza di elaborazione. Se il tuo software richiede che la CPU dell’utente lavori sempre al 100%, non resta memoria disponibile per eseguire altre operazioni. Questo è un problema serio e spesso porta a surriscaldamento e ad un calo significativo delle prestazioni. I colli di bottiglia possono verificarsi in diversi punti. I più comuni sono:
- CPU
- Memoria
- GPU
- Utilizzo disco
I migliori strumenti per il test delle prestazioni
Quale sia il migliore strumento di test delle prestazioni dipende dal progetto e dagli obiettivi. Alcuni, come Jmeter, sono estremamente adatti a eseguire test di carico e di stress. Dipende anche dal budget: le aziende più piccole possono scegliere tra molti strumenti open source, gratuiti e di alta qualità, per ridurre i costi.
Strumenti open source per il test delle prestazioni
Uno degli strumenti open source più apprezzati è Jmeter. È da anni la soluzione di riferimento per le piccole aziende che vogliono effettuare test efficaci. I test di prestazioni con Jmeter analizzano attentamente le prestazioni del server sotto carico. Ti permette di eseguire test di carico e di stress per verificare se il tuo software resiste al normale e massimo numero di utenti previsti.
Al termine dei test di prestazioni, Jmeter consente di visualizzare i risultati in vari modi semplici da interpretare. Una delle opzioni è la stampa dei risultati sotto forma di grafico. Ecco come si presenta un grafico Jmeter:

Nell’analisi del grafico, il parametro più importante è il throughput (linea verde), che indica il numero di richieste inviate durante il test. Più alto è il valore, meglio è. Mostra quante richieste il tuo software può gestire al minuto. In questo esempio, sono 8.003 richieste al minuto.
Altri strumenti top:
Ci sono alcuni svantaggi nei test delle prestazioni open source. Uno di questi è che tutti gli utenti simulati vengono eseguiti sui server aziendali. Questo significa che i test vengono effettuati in condizioni di performance ideali piuttosto che in situazioni reali. Nelle piccole aziende che non prevedono un carico sostanziale, ciò potrebbe essere sufficiente alle loro esigenze. Tuttavia, man mano che l'azienda cresce, potrebbe iniziare a valutare l'acquisto di uno strumento premium per i test delle prestazioni.
Ecco un breve elenco di alcuni strumenti premium per i test delle prestazioni:
Il test delle prestazioni è generalmente simile tra i diversi sistemi operativi. Molti degli strumenti di test delle prestazioni per Mac funzionano anche su Windows.
Considerazioni finali
Il test delle prestazioni è una componente indispensabile per garantire l'affidabilità e l'efficienza del software, specialmente per le aziende SaaS che stanno crescendo rapidamente. Sfruttando i migliori strumenti, i responsabili QA ottengono preziose intuizioni sulla scalabilità, la resistenza e la capacità dei sistemi di gestire elevati volumi di traffico. Iscriviti alla nostra newsletter per altri approfondimenti dai professionisti del quality assurance!
