Il test delle prestazioni valuta le prestazioni del sistema o dell'applicazione con carichi di varie dimensioni.
I criteri chiave includono velocità (quanto velocemente opera), stabilità (se funziona senza arresti anomali), scalabilità (la fluidità con cui vengono gestiti i carichi in aumento) e la reattività (quanto velocemente risponde ai prompt degli utenti).
Il concetto di prestazioni del software è alla base di tutti gli usi dei computer e le scarse prestazioni possono vanificare i migliori sforzi di un'organizzazione per offrire un'esperienza utente di qualità. Se gli sviluppatori non supervisionano adeguatamente i test delle prestazioni o non li eseguono con sufficiente frequenza, possono introdurre rallentamenti a livello di prestazioni. Questa situazione può soffocare la capacità di un sistema di gestire persino i carichi di traffico tipici durante i periodi normali.S Il tutto diventa ancora più problematico quando periodi imprevisti di picchi di utilizzi creano una domanda superiore.
Questa sfida potrebbe mettere a repentaglio le operazioni di un'azienda rivolte al pubblico. Lo sviluppo di una reputazione di qualità duratura richiede solitamente lunghi periodi di tempo. Tuttavia, questa reputazione può essere scalfita rapidamente e in modo permanente quando il pubblico inizia a chiedersi se un sistema o un'applicazione abbiano funzionalità affidabili. La pazienza dell'utente finale sta diventando sempre più limitata. Poiché la reputazione dell'azienda è spesso a rischio, c'è molto in gioco quando si parla di prestazioni.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
Definiamo prima la metodologia utilizzata nella maggior parte degli scenari di test delle prestazioni. Sei passaggi, composti da più parti, definiscono il tipico processo di test delle prestazioni.
Il primo passo nel processo di test delle prestazioni consiste nell'impostare parametri utili, come delineare gli obiettivi dell'applicazione a livello di prestazioni.
Bisogna quindi stabilire quali sono i criteri di prestazione accettabili (come tempi di risposta, produttività, utilizzo delle risorse e percentuali di errore).
Questa fase è anche il momento in cui il personale identifica indicatori chiave di prestazioni (KPI) per supportare in modo efficace le priorità aziendali e i requisiti a livello di prestazioni.
Non tutti i test devono essere utilizzati in ogni situazione. Gli sviluppatori o altri tester devono definire ciò che i test intendono analizzare.
Iniziano definendo gli scenari di utilizzo principali e progettando casi di test che riflettono le interazioni degli utenti nel mondo reale. Il passaggio successivo consiste nello specificare i dati di test e i workload che verranno utilizzati durante il processo di test.
Dopo avere bloccato queste variabili, i tester selezionano gli strumenti per il test delle prestazioni, gli script di test e le tecniche di test da utilizzare. Questa fase include l'impostazione del gating, ovvero il processo in base al quale determinate condizioni di qualità basate su codice consentono o negano l'accesso alle fasi di produzione successive.
Il test delle prestazioni esamina anche la larghezza di banda per confermare che le velocità di trasmissione dei dati possono gestire sufficientemente il traffico dei workload.
È necessario compiere un ultimo passaggio prima che il processo di test delle prestazioni possa iniziare ufficialmente. I tester creano un ambiente di test che imita accuratamente l'ambiente di produzione reale del sistema, quindi confermano che le applicazioni software sottoposte a test (AUT) siano state implementate all'interno dell'ambiente di test.
La preparazione finale prevede l'integrazione di strumenti di monitoraggio per acquisire le metriche delle prestazioni generate dal sistema durante il test.
Dopo avere definito in modo chiaro i parametri del test, è il momento di eseguire il test delle prestazioni. I tester o l'automazione dei test eseguono gli scenari di prova scelti e queste prove vengono utilizzate insieme agli strumenti di test delle prestazioni.
I tester in genere monitorano le prestazioni del sistema in tempo reale in modo da poter verificare la produttività, i tempi di risposta e l'utilizzo delle risorse.g Durante gli scenari di prova, i tester monitorano il sistema per individuare eventuali colli di bottiglia nelle prestazioni o altre anomalie relative alle prestazioni che si riflettono nelle metriche di test.
Successivamente, i tester valutano i dati sulle prestazioni raccolti durante il processo di test. Esaminano attentamente i dati raccolti e cercano le aree delle prestazioni che necessitano di miglioramenti.
I tester confrontano quindi questi risultati con i benchmark delle prestazioni stabiliti nella prima fase del processo di test. Grazie a questo confronto, i tester possono vedere dove i risultati dei test si discostano dalle prestazioni previste e dove potrebbero essersi verificati dei colli di bottiglia.
Dopo avere identificato i problemi di prestazioni attraverso l'analisi dei dati di test, gli sviluppatori lavorano sul codice per aggiornarlo con il sistema. Utilizzano ottimizzazioni del codice, aggiornamenti delle risorse o modifiche della configurazione per mitigare i problemi di prestazioni rilevati.
Dopo avere implementato le modifiche, gli sviluppatori ripetono la sequenza di test del software per confermare che le modifiche siano state applicate con successo. Gli sviluppatori ripetono le procedure fino a quando i risultati delle prestazioni non sono allineate ai benchmark definiti.
Il test delle prestazioni va "dietro le quinte" per controllare l'output del sistema o dell'applicazione, quindi è logico che i team di sviluppo software siano gli utenti più comuni dei metodi di test delle prestazioni. In questo primo gruppo di utenti sono inclusi professionisti attivamente impegnati nel processo di sviluppo, ovvero sviluppatori, ingegneri del controllo della qualità (QA) e team DevOps. Ognuno ottiene qualcosa di unico dai test delle prestazioni:
Il successivo gruppo di utenti non è costituito da sviluppatori, tuttavia lavora comunque a livello base con la gestione delle prestazioni del sistema quale componente principale del proprio lavoro:
Tuttavia, non è solo il management aziendale a eseguire i test delle prestazioni. Molte organizzazioni e aziende fanno uso frequente dei test delle prestazioni per vari scopi in aziende di qualsiasi dimensione:
Gli sviluppatori eseguono diversi tipi di test delle prestazioni per ricavare tipi specifici risultati sui dati e supportare una determinata strategia di test. Ecco i tipi di test più importanti.
Il test di carico indica il comportamento del sistema quando opera con i carichi previsti. L'obiettivo del test di carico è quello di mostrare il comportamento del sistema quando si verificano workload di routine in condizioni di lavoro normali con un numero medio di utenti simultanei.
Esempio: per un sito di e-commerce, un tester simula di essere un utente del sito e di passare attraverso le fasi di acquisto degli articoli, inserendo prodotti nel carrello e pagando per tali acquisti.
Il test di carico mostra se il sistema è in grado di sostenere condizioni di carico regolari. La scalabilità sottopone invece il sistema a stress, aumentando il volume dei dati o i carichi utente gestiti. Mostra se un sistema è in grado di soddisfare un ritmo maggiore continuando comunque a fornire risultati.
Esempio: nella scalabilità verticale, uno sviluppatore potrebbe aumentare la CPU e la memoria di un server di database affinché possa gestire un volume maggiore di query di dati.
Lo stress test è analogo a una prova di immersione condotta dall'equipaggio di un sottomarino. In questo caso, il sistema viene spinto fino ai suoi limiti operativi noti, e poi anche oltre, per determinare esattamente quanto possa sopportare prima di raggiungere il punto di rottura.
Esempio: il test di failover è una forma estrema di stress test che inizia con la simulazione dei guasti dei componenti. L'obiettivo è quello di vedere quanto tempo impiega il sistema per ripristinarsi e riprendere le operazioni.
Qui stiamo testando un diverso tipo di stress, ovvero quando il traffico degli utenti o il trasferimento del volume di dati subisce improvvisamente un forte e drastico picco di attività. Il sistema deve assorbire varie modifiche pur continuando con le normali operazioni.
Esempio: le aziende che gestiscono siti web devono prepararsi non solo alle interruzioni, ma anche all'ondata di utenti che cercano di accedere al sito contemporaneamente una volta che questo è tornato online. Devono anche valutare se il sistema è in grado di gestire quell'improvviso aumento della domanda. Il test del picco può calcolare la probabilità che tutto vada liscio.
Talvolta, nell'ambito delle prestazioni, parliamo di traffico degli utenti. Il test di volume, al contrario, riguardano il modo in cui un sistema gestisce grandi quantità di dati. Il sistema è in grado di elaborare i dati in modo completo e memorizzarli senza degradarli?
Esempio: una clinica medica conserva enormi volumi di informazioni sui pazienti e ha l'obbligo legale di poter accedere a tali cartelle cliniche e ai relativi dati. Questo costante afflusso di dati può mettere a dura prova un sistema. Il test di volume consente agli utenti di sapere se il proprio sistema è in grado di accettare costantemente più dati.
Può essere considerato come un test delle prestazioni nel lungo periodo. I veri colpevoli ricercati dal test di resistenza (chiamato anche soak test) sono il degrado dei dati e i problemi di perdita di memoria che spesso si verificano nell'arco di un lungo periodo di tempo.
Esempio: le piattaforme di social media funzionano 24 ore su 24 e l'uso continuo può presentare problemi a livello di stabilità della piattaforma, data storage e account utente. Il test di resistenza fornisce un quadro delle operazioni attuali, così come indicatori delle prestazioni future.
Sviluppatori e tester possono scegliere tra numerosi strumenti progettati per il test delle prestazioni. Ecco alcuni dei più importanti:
Come per quasi tutte le questioni relative ai computer, l'intelligenza artificiale (AI) sta ora spingendo i test del software verso livelli di efficienza completamente nuovi. Sta rendendo il processo di test delle prestazioni complessive più veloce, più accurato e più facile da automatizzare.
In particolare, l'AI può impiegare cicli di test più brevi, riducendo i tempi di esecuzione dei test. Inoltre, grazie all'elevata precisione dell'AI, è in grado di notare i cambiamenti nelle prestazioni più lievi che potrebbero sfuggire ai tester umani. Attraverso l'analytics predittiva, l'AI può inoltre valutare le tendenze operative e i dati storici e prevedere dove e quando potrebbero verificarsi i prossimi colli di bottiglia. Può anche utilizzare il comportamento predittivo del sistema e persino regolare i parametri di test in base a esso.
Tuttavia, la cosa di gran lunga più significativa che l'AI ha fatto per le prestazioni (finora) è assisterne gli sforzi su larga scala promuovendo l'automazione. Questa automazione è sorprendente perché è perfettamente in grado di eseguire l'intero processo di test delle prestazioni.
L'AI non solo può automatizzare il modo in cui vengono eseguiti i test, ma può anche scrivere gli script di test destinati all'esecuzione. Inoltre, è in grado di interpretare i risultati dei test sul back-end e di offrire indicazioni per risolvere le situazioni problematiche.
Uno degli impatti più interessanti e promettenti dell'AI sui test delle prestazioni è il crescente uso della collaborazione uomo-AI. Questa collaborazione parte dal presupposto che l'istinto e la conoscenza umana abbiano ancora un ruolo vitale da svolgere. Di fatto, in alcune situazioni, seguire gli impulsi umani rappresenta ancora la direttiva principale.
Alcuni esperti sono convinti che i test delle prestazioni del futuro si basino su questo approccio ibrido, che abbina la mentalità e la potenza di elaborazione del computer al senso umano del contesto e delle sfumature.
Automatizza la distribuzione del software per qualsiasi applicazione on premise, cloud o mainframe.
Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.
Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.