I test di carico ve­ri­fi­ca­no la stabilità di un’ap­pli­ca­zio­ne 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 ve­ri­fi­ca­re che il software sia pronto per il mercato o per testare la re­si­lien­za dei sistemi esistenti. Il suo obiettivo è scoprire quanto un sistema può sop­por­ta­re prima che le sue pre­sta­zio­ni calino si­gni­fi­ca­ti­va­men­te 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 si­mul­ta­nei o si ripetono alcune azioni in rapida suc­ces­sio­ne. Il sistema reagisce a questi test di carico in modo ottimale e non subisce danni in caso di so­vrac­ca­ri­co.

Qual è lo scopo di un test di carico?

I test di carico possono essere uti­liz­za­ti per vari scopi. Nello sviluppo agile, ad esempio, fanno parte della garanzia di qualità. Prima del lancio di un nuovo software, si ve­ri­fi­ca­no quali requisiti il programma è in grado di gestire e dove è stata raggiunta la sua capacità. Anche gli errori tra­scu­ra­ti nelle fasi pre­ce­den­ti possono essere notati at­tra­ver­so un test di carico. Si controlla come un sistema elabora un carico ag­giun­ti­vo ina­spet­ta­to, a che punto si ve­ri­fi­ca­no le li­mi­ta­zio­ni e quanto è veloce il tempo di reazione agli errori.

Anche i sistemi esistenti possono essere con­trol­la­ti at­tra­ver­so test di carico, ad esempio i siti web. Se chi am­mi­ni­stra la pagina si aspetta un’affluenza elevata e non pro­gram­ma­ta, può simulare il so­vrac­ca­ri­co imminente con questo test e garantire così che il proprio sistema sia in grado di gestire bene il carico ag­giun­ti­vo. Un traffico maggiore può ve­ri­fi­car­si in occasione del lancio di un nuovo prodotto, di un evento speciale o quando il vostro sito web è più visitato grazie alla pub­bli­ci­tà. Lo scopo dei test di carico è quello di ve­ri­fi­ca­re la re­si­sten­za di un sistema e la sua reazione, in modo da poter mi­glio­ra­re le pre­sta­zio­ni in anticipo, se ne­ces­sa­rio.

Quali tipi di test di carico ci sono?

Non tutti i test di carico sono uguali. Esistono approcci diversi, concepiti per scopi diversi. Le di­stin­zio­ni non sono del tutto nette e i prodotti di alcuni fornitori con­sen­to­no anche diversi tipi di test. Tuttavia, si può parlare ap­pros­si­ma­ti­va­men­te di quattro gruppi diversi.

Il test delle pre­sta­zio­ni

Il test delle pre­sta­zio­ni è il test di carico classico ed è cer­ta­men­te la forma più semplice di queste opzioni di test. I requisiti richiesti a un sistema sono re­la­ti­va­men­te bassi. Si verifica se un sistema nuovo o esistente è in grado di sop­por­ta­re i carichi previsti e se la qualità delle pre­sta­zio­ni 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 si­mul­ta­nei. Il test di carico simula questi accessi e verifica se i tempi di reazione sod­di­sfa­no le aspet­ta­ti­ve.

Il test di capacità

Questo tipo di test di carico è un po’ più ap­pro­fon­di­to. Invece di chiedersi se il sistema è in grado di fare ciò che dovrebbe, la domanda da porsi è piuttosto “Cosa può fare ef­fet­ti­va­men­te il mio sistema?”. Pertanto, invece di simulare un’affluenza prevista, il carico viene aumentato pro­gres­si­va­men­te. A tal fine, è ne­ces­sa­rio de­ter­mi­na­re in anticipo quali sono esat­ta­men­te i requisiti che il sistema deve sod­di­sfa­re. Se, ad esempio, si ipotizza il tempo di risposta, si deve con­si­de­ra­re in anticipo la velocità con cui il sistema deve reagire. Poi inizia il test di carico vero e proprio, che impone gra­dual­men­te requisiti più elevati. L’ope­ra­zio­ne continua fino a quando il sistema non raggiunge i suoi limiti.

Stress test

Il passo suc­ces­si­vo è 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 de­li­be­ra­ta­men­te questo valore. Non si tratta di quanto il sistema può fare, ma di come reagisce quando è so­vrac­ca­ri­co. Pertanto, in questo test di carico, gli si presenta un compito ir­ri­sol­vi­bi­le 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 af­fron­ta­re i casi di dif­fi­col­tà durante il fun­zio­na­men­to reale.

Test di re­si­sten­za

I test di carico pre­sen­ta­ti finora sono stati pro­get­ta­ti per un breve periodo di tempo. Il sistema viene testato, il test viene com­ple­ta­to e i risultati vengono con­trol­la­ti. Tuttavia, queste procedure non for­ni­sco­no alcuna in­for­ma­zio­ne sulla capacità del sistema di sop­por­ta­re un carico in modo per­ma­nen­te. Scoprirlo è il compito di un test di re­si­sten­za. Questa ope­ra­zio­ne viene eseguita per diverse ore o ad­di­rit­tu­ra per giorni e determina se il sistema rimane stabile durante il normale fun­zio­na­men­to, quali risorse vengono consumate e se si ve­ri­fi­ca­no errori im­pre­vi­sti. Infatti, la maggior parte dei sistemi dovrebbe essere sempre ac­ces­si­bi­le. Il test di re­si­sten­za ga­ran­ti­sce che questo requisito venga sod­di­sfat­to.

Cosa si deve con­si­de­ra­re 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, even­tual­men­te mi­glio­rar­lo e valutare meglio i possibili rischi in anticipo. Tuttavia, prima di eseguirne uno, è ne­ces­sa­rio fare alcune con­si­de­ra­zio­ni.

Definire le aspet­ta­ti­ve

La prima domanda da porsi è cosa si vuole ottenere con un test di carico. Ciò riguarda in­nan­zi­tut­to gli obiettivi e le domande fon­da­men­ta­li a cui un test di questo tipo dovrebbe ri­spon­de­re. Siete alla ricerca di un test finale prima del lancio sul mercato? De­si­de­ra­te ve­ri­fi­ca­re cosa è in grado di fare il vostro sistema? Volete pre­pa­rar­vi per tutti gli scenari possibili e so­vrac­ca­ri­ca­re il programma? Oppure siete in­te­res­sa­ti so­prat­tut­to alle pre­sta­zio­ni nel lungo termine? A seconda delle esigenze, è ne­ces­sa­rio un test di carico diverso.

Una volta chiariti gli obiettivi di base, è ne­ces­sa­rio spe­ci­fi­car­li. Quale tempo di risposta voglio ottenere? Cosa dovrebbe fare il mio sistema? Quali valori sono ac­cet­ta­bi­li e a che punto devo mi­glio­ra­re le pre­sta­zio­ni? Quali carichi massimi posso aspet­tar­mi? Se ri­spon­de­te a queste domande prima di eseguire il test, potrete af­fron­tar­lo in modo molto più ef­fi­cien­te e mirato. In questo modo si ot­ter­ran­no i migliori risultati e si uti­liz­ze­rà il test di carico in modo ottimale.

Im­po­sta­zio­ne dell’orario

Anche questo punto va con­si­de­ra­to in due parti. Da un lato, prima di eseguire il test di carico, è ne­ces­sa­rio con­si­de­ra­re a che punto dello sviluppo questo test risulta utile. Ad esempio, se la vostra ap­pli­ca­zio­ne non è ancora matura, il test di carico non produrrà risultati utili. Tuttavia, se lo eseguite troppo tardi, i risultati po­treb­be­ro non essere più in grado di incidere nello sviluppo. D’altra parte, anche nel caso di un sistema già esistente, è ne­ces­sa­rio con­si­de­ra­re quando questo test avrà il minor impatto negativo sulle normali ope­ra­zio­ni aziendali. So­prat­tut­to se de­si­de­ra­te condurre un test di re­si­sten­za, il momento giusto gioca un ruolo im­por­tan­te.

De­ter­mi­na­re l’impegno ne­ces­sa­rio

Di seguito vi pre­sen­tia­mo diversi strumenti con­si­glia­ti per l’ese­cu­zio­ne di questo test. In questo caso si nota subito che i costi previsti sono molto diversi. Esistono soluzioni open source con­si­glia­bi­li, ma so­prat­tut­to nel caso di un uso ri­cor­ren­te, può essere utile anche una variante pro­prie­ta­ria. È quindi ne­ces­sa­rio stabilire in anticipo quanto si vorrebbe investire in un test di carico. Anche la questione della vicinanza dell’ambiente di test all’ambiente di pro­du­zio­ne è im­por­tan­te e deve essere chiarita in anticipo. Se de­si­de­ra­te uti­liz­za­re più test di carico, dovreste coor­di­nar­li tra loro e or­ga­niz­za­re la va­lu­ta­zio­ne dei dati del test prima del suo inizio.

Come si svolge un test di carico?

Quando si esegue un test di carico, la regola fon­da­men­ta­le è “la sicurezza prima di tutto”. In ogni singola fase, il sistema deve essere protetto e sup­por­ta­to nel miglior modo possibile. A tal fine si con­si­glia­no 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 pos­si­bi­li­tà di tornare ra­pi­da­men­te allo stato pre­ce­den­te. Con­trol­la­te anche quali sistemi esterni sono collegati e as­si­cu­ra­te­vi che non possano essere in­fluen­za­ti dal test di carico.
  • Procedete gra­dual­men­te: anche se de­si­de­ra­te testare il vostro sistema su larga scala, è meglio iniziare in piccolo, av­vi­ci­nar­si len­ta­men­te e poi aumentare per gradi. So­prat­tut­to se avete l’in­ten­zio­ne di so­vrac­ca­ri­ca­re il sistema con un test di carico, vale la pena di ve­ri­fi­ca­re in anticipo le sue capacità di base.
  • La giusta soluzione software: na­tu­ral­men­te, anche la scelta di una soluzione software adeguata e utile gioca un ruolo im­por­tan­te. Solo se il test di carico cor­ri­spon­den­te è adattato alle vostre esigenze, otterrete risultati si­gni­fi­ca­ti­vi e in­for­ma­zio­ni preziose.

Quali sono gli strumenti di­spo­ni­bi­li per i test di carico?

Esistono numerosi strumenti spe­cia­liz­za­ti in test di carico che for­ni­sco­no servizi preziosi per la verifica del sistema. Si con­si­glia­no in par­ti­co­la­re i seguenti programmi:

JMeter

JMeter è una soluzione open source e vanta una community numerosa e di­spo­ni­bi­le. Con questo strumento è possibile eseguire test di carico per numerose ap­pli­ca­zio­ni e server, oltre che creare semplici report. Per imparare a usarlo bene serve un po’ di tempo e questo può essere visto come uno svan­tag­gio. Tuttavia, se ciò non vi spaventa, otterrete un’ec­cel­len­te al­ter­na­ti­va ai classici test di carico più costosi.

IBM Rational Per­for­man­ce Tester

IBM Rational Per­for­man­ce Tester è una potente opzione per il test delle pre­sta­zio­ni e delle capacità. Permette inoltre di scrivere script di test in Java, generare sta­ti­sti­che e ve­ri­fi­ca­re il cloud. Il test di carico è re­la­ti­va­men­te facile da eseguire e non richiede molto tempo per imparare a usarlo cor­ret­ta­men­te. Oltre alla versione di prova gratuita, esistono diversi piani con prezzi dif­fe­ren­ti.

Loa­dRun­ner

Loa­dRun­ner è un classico nel campo dei test di carico. È di­spo­ni­bi­le in una versione gratuita e in una pro­prie­ta­ria e supporta numerose tec­no­lo­gie. Il programma offre numerose pos­si­bi­li­tà di eseguire test di carico esat­ta­men­te secondo le vostre esigenze e convince per la sua sem­pli­ci­tà di gestione.

Vai al menu prin­ci­pa­le