Test di carico: come verificare la resilienza del sistema
I test di carico verificano la stabilità di un’applicazione o ne testano i limiti. Sul mercato esistono numerosi strumenti di test di carico gratuiti e a pagamento.
Cos’è un test di carico?
Il test di carico (in inglese: “load testing”) è un modo per verificare che il software sia pronto per il mercato o per testare la resilienza dei sistemi esistenti. Il suo obiettivo è scoprire quanto un sistema può sopportare prima che le sue prestazioni calino significativamente e il servizio offerto non possa più essere fornito al massimo delle sue capacità. A tal fine, vengono simulati carichi che stimolano il sistema e lo portano ai suoi limiti. Pertanto, vengono simulati numerosi accessi simultanei o si ripetono alcune azioni in rapida successione. Il sistema reagisce a questi test di carico in modo ottimale e non subisce danni in caso di sovraccarico.
Qual è lo scopo di un test di carico?
I test di carico possono essere utilizzati per vari scopi. Nello sviluppo agile, ad esempio, fanno parte della garanzia di qualità. Prima del lancio di un nuovo software, si verificano quali requisiti il programma è in grado di gestire e dove è stata raggiunta la sua capacità. Anche gli errori trascurati nelle fasi precedenti possono essere notati attraverso un test di carico. Si controlla come un sistema elabora un carico aggiuntivo inaspettato, a che punto si verificano le limitazioni e quanto è veloce il tempo di reazione agli errori.
Anche i sistemi esistenti possono essere controllati attraverso test di carico, ad esempio i siti web. Se chi amministra la pagina si aspetta un’affluenza elevata e non programmata, può simulare il sovraccarico imminente con questo test e garantire così che il proprio sistema sia in grado di gestire bene il carico aggiuntivo. Un traffico maggiore può verificarsi in occasione del lancio di un nuovo prodotto, di un evento speciale o quando il vostro sito web è più visitato grazie alla pubblicità. Lo scopo dei test di carico è quello di verificare la resistenza di un sistema e la sua reazione, in modo da poter migliorare le prestazioni in anticipo, se necessario.
Quali tipi di test di carico ci sono?
Non tutti i test di carico sono uguali. Esistono approcci diversi, concepiti per scopi diversi. Le distinzioni non sono del tutto nette e i prodotti di alcuni fornitori consentono anche diversi tipi di test. Tuttavia, si può parlare approssimativamente di quattro gruppi diversi.
Il test delle prestazioni
Il test delle prestazioni è il test di carico classico ed è certamente la forma più semplice di queste opzioni di test. I requisiti richiesti a un sistema sono relativamente bassi. Si verifica se un sistema nuovo o esistente è in grado di sopportare i carichi previsti e se la qualità delle prestazioni rimane invariata durante questo periodo. Questo tipo di test è adatto, ad esempio, alle web app, che devono essere in grado di gestire un certo numero di accessi simultanei. Il test di carico simula questi accessi e verifica se i tempi di reazione soddisfano le aspettative.
Il test di capacità
Questo tipo di test di carico è un po’ più approfondito. Invece di chiedersi se il sistema è in grado di fare ciò che dovrebbe, la domanda da porsi è piuttosto “Cosa può fare effettivamente il mio sistema?”. Pertanto, invece di simulare un’affluenza prevista, il carico viene aumentato progressivamente. A tal fine, è necessario determinare in anticipo quali sono esattamente i requisiti che il sistema deve soddisfare. Se, ad esempio, si ipotizza il tempo di risposta, si deve considerare in anticipo la velocità con cui il sistema deve reagire. Poi inizia il test di carico vero e proprio, che impone gradualmente requisiti più elevati. L’operazione continua fino a quando il sistema non raggiunge i suoi limiti.
Stress test
Il passo successivo è lo stress test. In linea di principio, questo approccio inizia laddove finisce il test di capacità. Mentre il test di capacità esamina fino a che punto il sistema può essere scalato e si ferma al valore massimo, lo stress test supera deliberatamente questo valore. Non si tratta di quanto il sistema può fare, ma di come reagisce quando è sovraccarico. Pertanto, in questo test di carico, gli si presenta un compito irrisolvibile e poi si misurano i tempi di risposta o si osserva quando il sistema si blocca e come lo fa. In questo modo, sarete preparati ad affrontare i casi di difficoltà durante il funzionamento reale.
Test di resistenza
I test di carico presentati finora sono stati progettati per un breve periodo di tempo. Il sistema viene testato, il test viene completato e i risultati vengono controllati. Tuttavia, queste procedure non forniscono alcuna informazione sulla capacità del sistema di sopportare un carico in modo permanente. Scoprirlo è il compito di un test di resistenza. Questa operazione viene eseguita per diverse ore o addirittura per giorni e determina se il sistema rimane stabile durante il normale funzionamento, quali risorse vengono consumate e se si verificano errori imprevisti. Infatti, la maggior parte dei sistemi dovrebbe essere sempre accessibile. Il test di resistenza garantisce che questo requisito venga soddisfatto.
Cosa si deve considerare prima di eseguire un test di carico?
In linea di principio, i test di carico sono un buon modo per mettere alla prova un sistema, eventualmente migliorarlo e valutare meglio i possibili rischi in anticipo. Tuttavia, prima di eseguirne uno, è necessario fare alcune considerazioni.
Definire le aspettative
La prima domanda da porsi è cosa si vuole ottenere con un test di carico. Ciò riguarda innanzitutto gli obiettivi e le domande fondamentali a cui un test di questo tipo dovrebbe rispondere. Siete alla ricerca di un test finale prima del lancio sul mercato? Desiderate verificare cosa è in grado di fare il vostro sistema? Volete prepararvi per tutti gli scenari possibili e sovraccaricare il programma? Oppure siete interessati soprattutto alle prestazioni nel lungo termine? A seconda delle esigenze, è necessario un test di carico diverso.
Una volta chiariti gli obiettivi di base, è necessario specificarli. Quale tempo di risposta voglio ottenere? Cosa dovrebbe fare il mio sistema? Quali valori sono accettabili e a che punto devo migliorare le prestazioni? Quali carichi massimi posso aspettarmi? Se rispondete a queste domande prima di eseguire il test, potrete affrontarlo in modo molto più efficiente e mirato. In questo modo si otterranno i migliori risultati e si utilizzerà il test di carico in modo ottimale.
Impostazione dell’orario
Anche questo punto va considerato in due parti. Da un lato, prima di eseguire il test di carico, è necessario considerare a che punto dello sviluppo questo test risulta utile. Ad esempio, se la vostra applicazione non è ancora matura, il test di carico non produrrà risultati utili. Tuttavia, se lo eseguite troppo tardi, i risultati potrebbero non essere più in grado di incidere nello sviluppo. D’altra parte, anche nel caso di un sistema già esistente, è necessario considerare quando questo test avrà il minor impatto negativo sulle normali operazioni aziendali. Soprattutto se desiderate condurre un test di resistenza, il momento giusto gioca un ruolo importante.
Determinare l’impegno necessario
Di seguito vi presentiamo diversi strumenti consigliati per l’esecuzione di questo test. In questo caso si nota subito che i costi previsti sono molto diversi. Esistono soluzioni open source consigliabili, ma soprattutto nel caso di un uso ricorrente, può essere utile anche una variante proprietaria. È quindi necessario stabilire in anticipo quanto si vorrebbe investire in un test di carico. Anche la questione della vicinanza dell’ambiente di test all’ambiente di produzione è importante e deve essere chiarita in anticipo. Se desiderate utilizzare più test di carico, dovreste coordinarli tra loro e organizzare la valutazione dei dati del test prima del suo inizio.
Come si svolge un test di carico?
Quando si esegue un test di carico, la regola fondamentale è “la sicurezza prima di tutto”. In ogni singola fase, il sistema deve essere protetto e supportato nel miglior modo possibile. A tal fine si consigliano i seguenti approcci:
- Misure di sicurezza: prima del test di carico, create un backup di tutti i dati del sistema. In caso di problemi, avete così la possibilità di tornare rapidamente allo stato precedente. Controllate anche quali sistemi esterni sono collegati e assicuratevi che non possano essere influenzati dal test di carico.
- Procedete gradualmente: anche se desiderate testare il vostro sistema su larga scala, è meglio iniziare in piccolo, avvicinarsi lentamente e poi aumentare per gradi. Soprattutto se avete l’intenzione di sovraccaricare il sistema con un test di carico, vale la pena di verificare in anticipo le sue capacità di base.
- La giusta soluzione software: naturalmente, anche la scelta di una soluzione software adeguata e utile gioca un ruolo importante. Solo se il test di carico corrispondente è adattato alle vostre esigenze, otterrete risultati significativi e informazioni preziose.
Quali sono gli strumenti disponibili per i test di carico?
Esistono numerosi strumenti specializzati in test di carico che forniscono servizi preziosi per la verifica del sistema. Si consigliano in particolare i seguenti programmi:
JMeter
JMeter è una soluzione open source e vanta una community numerosa e disponibile. Con questo strumento è possibile eseguire test di carico per numerose applicazioni e server, oltre che creare semplici report. Per imparare a usarlo bene serve un po’ di tempo e questo può essere visto come uno svantaggio. Tuttavia, se ciò non vi spaventa, otterrete un’eccellente alternativa ai classici test di carico più costosi.
IBM Rational Performance Tester
IBM Rational Performance Tester è una potente opzione per il test delle prestazioni e delle capacità. Permette inoltre di scrivere script di test in Java, generare statistiche e verificare il cloud. Il test di carico è relativamente facile da eseguire e non richiede molto tempo per imparare a usarlo correttamente. Oltre alla versione di prova gratuita, esistono diversi piani con prezzi differenti.
LoadRunner
LoadRunner è un classico nel campo dei test di carico. È disponibile in una versione gratuita e in una proprietaria e supporta numerose tecnologie. Il programma offre numerose possibilità di eseguire test di carico esattamente secondo le vostre esigenze e convince per la sua semplicità di gestione.