Cos'è lo STRESS Test nel test del software?
⚡ Riepilogo intelligente
Lo stress test spinge un'applicazione oltre i suoi normali limiti operativi per individuare il punto di rottura, verificare che i guasti vengano gestiti correttamente e dimostrare che il sistema si ripristina senza problemi una volta rimosso il carico estremo.
Cos'è lo stress test?
Test di stress Lo stress test è un tipo di test del software che verifica la stabilità e l'affidabilità di un'applicazione. L'obiettivo dello stress test è misurare la robustezza e la capacità di gestione degli errori del software in condizioni di carico estremamente elevato, garantendo che il software non si blocchi in situazioni critiche. Si tratta di testare deliberatamente il software oltre i normali punti di funzionamento e di valutarne il comportamento in condizioni estreme.
Durante un test di stress, l'applicazione in prova (AUT) viene sottoposta a stress per un breve periodo di tempo al fine di scoprirne la capacità di resistenza. L'utilizzo principale del test di stress consiste nel determinare il limite oltre il quale un sistema, un software o un hardware si guasta. Verifica inoltre se il sistema dimostra un'efficace gestione degli errori una volta superato tale limite.
In Software Engineering, Lo stress test è spesso elencato insieme Test di resistenzama i due differiscono: lo Stress Testing applica un carico insolitamente elevato in un breve intervallo per trovare il punto di rottura, mentre l'Endurance Testing (o test di resistenza) mantiene un carico moderato per ore per evidenziare il degrado graduale.
Lo screenshot qui sotto mostra un ampio blocco di dati copiato da una pagina web.
L'applicazione in fase di test viene messa sotto stress quando vengono copiati 5 GB di dati dal sito web e incollati in Blocco note. Blocco note è ora sotto stress e restituisce un messaggio di errore "Non risponde", esattamente come mostrato nella schermata successiva.
Lo stesso principio si applica direttamente anche ai sistemi lato server.
Necessità di stress test
Consideriamo i seguenti esempi in tempo reale in cui l'utilizzo dello stress test risulta evidente:
- Durante il periodo del festival, un negozio onlineping Il sito potrebbe registrare un picco di traffico o quando annuncia una promozione.
- Quando un blog viene menzionato in un importante quotidiano, subisce un improvviso aumento del traffico.
È fondamentale eseguire test di stress per gestire picchi di traffico anomali di questo tipo. L'incapacità di gestire questo traffico improvviso può comportare una perdita di fatturato e danni alla reputazione.
I test di stress sono inoltre estremamente utili per i seguenti motivi:
- Verifica se il sistema funziona in condizioni anomale.
- Conferma che viene visualizzato un messaggio di errore appropriato quando il sistema è sotto stress.
- Un guasto del sistema in condizioni estreme potrebbe comportare enormi perdite di fatturato.
- È meglio prepararsi a condizioni estreme eseguendo in anticipo dei test di stress.
La sezione successiva illustra cosa deve dimostrare un test di stress efficace.
Obiettivi dello stress test
L'obiettivo dello stress test è analizzare il comportamento del sistema dopo un guasto. Affinché lo stress test abbia successo, il sistema deve visualizzare un messaggio di errore appropriato quando si trova in condizioni estreme.
Per condurre i test di stress, a volte vengono utilizzati set di dati di grandi dimensioni, e questi dati potrebbero andare persi durante un malfunzionamento del sistema. I tester devono assicurarsi che questi dati relativi alla sicurezza non vengano persi durante i test di stress.
Lo scopo principale dei test di stress è garantire che il sistema si riprenda dopo un guasto, una proprietà chiamata recuperabilità. Test di recupero quindi verifica nel dettaglio tale procedura di ripristino.
Test di carico vs. test di stress
Entrambe le tecniche appartengono alla Test di Performance Sono membri della stessa famiglia, quindi è facile confonderli. Il diagramma seguente mette a confronto i due profili di carico.
| Caricare i test | Test di stress |
|---|---|
| Caricare i test Verifica il comportamento del sistema in condizioni di carico di lavoro normali; simula il carico di lavoro effettivo previsto. | Lo stress test verifica il comportamento del sistema in condizioni estreme e viene eseguito fino al cedimento del sistema. |
| I test di carico non interrompono il sistema. | Lo stress test cerca deliberatamente di mandare in tilt il sistema sovraccaricandolo di dati o privandolo delle risorse necessarie. |
I profili correlati includono Test delle punte (una breve e improvvisa esplosione), Test di volume (grandi quantità di dati piuttosto che molti utenti) e Test di scalabilità (margine di crescita).
Tipi di stress test
Di seguito vengono illustrate le diverse tipologie di stress test, una alla volta.
Test di stress distribuito
Nei sistemi client-server distribuiti, i test vengono eseguiti su tutti i client dal server. Il ruolo del server di stress è quello di distribuire un set di test di stress a tutti i client di stress e di track lo stato di ciascun client. Dopo che un client contatta il server, quest'ultimo aggiunge il nome del client e inizia a inviare dati per il test. La figura seguente mostra come il server di stress raggiunge alcuni client ma non altri.
Nel frattempo, i computer client inviano un segnale, o heartbeat, per confermare di essere ancora connessi al server. Se il server non riceve alcun segnale da un computer client, è necessario esaminare ulteriormente quel computer per la risoluzione dei problemi. Nella figura, il server può connettersi con 2 client (Client1 e Client2), ma non può inviare o ricevere segnali da Client 3 e Client 4.
Per questi scenari di stress test, l'opzione migliore è un'esecuzione notturna. I grandi data center necessitano di un metodo più efficiente per individuare i computer che hanno subito guasti da stress che richiedono un'analisi più approfondita.
Test di stress dell'applicazione
Questo test si concentra sull'individuazione di difetti relativi al blocco e alla gestione dei dati, a problemi di rete e a colli di bottiglia prestazionali all'interno di una singola applicazione.
Test di stress transazionali
Esegue test di stress su una o più transazioni tra due o più applicazioni. Viene utilizzato per la messa a punto e l'ottimizzazione del sistema.
Test di stress sistemico
Si tratta di un test di stress integrato che può essere eseguito su più sistemi che condividono lo stesso server. Viene utilizzato per individuare difetti in cui un'applicazione blocca i dati di un'altra applicazione.
Test di stress esplorativi
Questo tipo di stress test viene utilizzato per testare il sistema con parametri o condizioni insolite, improbabili in uno scenario reale. Viene impiegato per individuare difetti in situazioni impreviste, come ad esempio:
- Un gran numero di utenti ha effettuato l'accesso contemporaneamente.
- Avvio simultaneo di un antivirus su tutti i computer.
- Un database va offline mentre è in fase di accesso da un sito web.
- Un grande volume di dati viene inserito simultaneamente nel database.
Indipendentemente dalla variante applicata, la sequenza di esecuzione rimane la stessa.
Come eseguire lo stress test?
Il processo di stress test si articola in 5 fasi principali:
- Passaggio 1) Pianificazione dello stress test: Qui si raccolgono i dati di sistema, si analizza il sistema e si definiscono gli obiettivi del test di stress.
- Passaggio 2) Creare script di automazione: In questa fase, si creano gli script di automazione per i test di stress e si generano i dati di test per gli scenari di stress.
- Passaggio 3) Esecuzione dello script: In questa fase, si eseguono gli script di automazione per i test di stress e si memorizzano i risultati.
- Passaggio 4) Analisi dei risultati: In questa fase, si analizzano i risultati dello stress test e si identificano i colli di bottiglia.
- Fase 5) Messa a punto e ottimizzazione: In questa fase, si perfeziona il sistema, si modificano le configurazioni e si ottimizza il codice con l'obiettivo di raggiungere il benchmark desiderato.
Infine, si esegue nuovamente l'intero ciclo per determinare se le modifiche hanno prodotto i risultati desiderati. Ad esempio, non è insolito che siano necessari da 3 a 4 cicli del processo di Stress Testing prima che vengano raggiunti gli obiettivi di prestazioni, quindi gli script vengono normalmente mantenuti insieme al regressione on.
Strumenti consigliati per i test di stress
I quattro strumenti elencati di seguito coprono la maggior parte delle esigenze, dalle suite aziendali a un'opzione open-source gratuita.
LoadRunner
LoadRunner è uno strumento di test di carico ampiamente utilizzato, ora venduto da OpenText nelle edizioni Professional, Enterprise e Cloud dopo il passaggio da HP a Micro Focus OpenTextI risultati dei test di carico prodotti da LoadRunner vengono considerati come un parametro di riferimento.
JMeter
Apache JMeter è uno strumento di test open-source. È un puro Java applicazione per test di stress e di prestazioni, ed è destinata a coprire tipi di test come carico, funzionali e di stress. Versioni attuali 5.6.x di Apache JMeter richiedere Java 8 o successivo, con Java 17 consigliati.
Prova di sforzo
Questo strumento fornisce un'analisi approfondita delle prestazioni delle applicazioni web, presenta i risultati in formato grafico ed è semplice da usare. Non è richiesto alcuno scripting di alto livello, il che mantiene il ritorno sull'investimento atracadatto a team più piccoli.
NeoCaricare
NeoCaricare, ora parte del Tricentis portfolio, è uno strumento popolare per testare web e Applicazioni mobiliPuò simulare migliaia di utenti per valutare le prestazioni delle applicazioni sotto carico e analizzare i tempi di risposta. Supporta inoltre test di prestazioni, carico e stress integrati nel cloud ed è altamente scalabile.
Ulteriori opzioni sono elencate nella guida a strumenti di test delle prestazioniQualunque sia la scelta, il suo risultato avrà un significato solo se confrontato con le metriche riportate di seguito.
Metriche per lo stress test
Le metriche aiutano a valutare le prestazioni di un sistema e vengono generalmente analizzate al termine dello stress test. Le metriche comunemente utilizzate si suddividono in tre famiglie.
Misurazione della scalabilità e delle prestazioni
- Pagine al secondo: Misura il numero di pagine richieste al secondo.
- Throughput: Un parametro di base: la dimensione dei dati di risposta al secondo.
- turni: Il numero di volte in cui sono stati pianificati gli scenari di test rispetto al numero di volte in cui un cliente li ha eseguiti.
Risposta alla domanda
- Tempo di esecuzione: Tempo medio di recupero di un'immagine o di una pagina.
- Tempo al primo byte: Tempo impiegato per restituire il primo byte di dati o informazioni.
- Tempo di pagina: Tempo impiegato per recuperare tutte le informazioni presenti in una pagina.
fallimenti
- Connessioni non riuscite: Numero di connessioni fallite rifiutate dal client (segnale debole).
- Round falliti: Numero di round falliti.
- Tentativi falliti: Numero di tentativi falliti dal sistema (link interrotti o immagini non visualizzate).
La sezione conclusiva elenca le situazioni che più spesso giustificano uno stress test.
Esempi di test di stress
I test di stress sono necessari ogni volta che si prevede che un evento spinga il traffico ben oltre i livelli di base giornalieri:
- Un sito web di e-commerce che annuncia una svendita per le festività.
- Un sito web di notizie al momento di un evento importante.
- Un ente scolastico pubblica i risultati degli esami.
- Siti di social network, blog e app per dispositivi mobili durante un momento virale.
In ogni caso, il test monitora risorse quali memoria, processore e rete, verifica che vengano visualizzati messaggi di errore appropriati sotto stress e conferma che il sistema torni alla normalità in seguito. Si inserisce nel Ciclo di vita del test del software come controllo non funzionale a fianco Test di sistema e l'insieme più ampio di tipi di test del software.

.png)
.png)

