Cos'รจ il test di resistenza nei test del software? (con esempio)
โก Riepilogo intelligente
Il test di resistenza esegue un'applicazione sotto un carico normale previsto per un periodo prolungato, al fine di verificare se le prestazioni si degradano nel tempo. ร il test che individua i difetti che un test di carico di un'ora non รจ in grado di rilevare.

Cos'รจ il test di resistenza?
Test di resistenza รจ un tipo di test del software non funzionale in cui un software viene testato con un carico elevato prolungato per un periodo di tempo significativo per valutare il comportamento dell'applicazione software in condizioni di utilizzo prolungato. Lo scopo principale dei test di resistenza รจ garantire che l'applicazione sia sufficientemente capace da gestire un carico prolungato senza alcun deterioramento del tempo di risposta.
Questo tipo di test viene eseguito nell'ultima fase del ciclo di esecuzione delle prestazioni. Il test di resistenza รจ un processo lungo e talvolta dura anche fino a un anno. Ciรฒ puรฒ includere l'applicazione di carichi esterni come il traffico Internet o le azioni dell'utente. Ciรฒ rende i test di resistenza diversi da Caricare i test, che di solito termina in un paio d'ore circa.
Resistenza significa capacitร , quindi in altre parole รจ possibile definire il test di resistenza come test di capacitร .
Obiettivi dei test di resistenza
- L'obiettivo principale del test di resistenza รจ verificare la presenza di perdite di memoria.
- Per scoprire le prestazioni del sistema in condizioni di utilizzo prolungato.
- Per garantire che, dopo un lungo periodo, il tempo di risposta del sistema rimanga lo stesso o migliore rispetto all'inizio del test.
- Per determinare il numero di utenti e/o transazioni che un dato sistema supporterร e raggiungerร gli obiettivi di prestazione.
- Per gestire i carichi futuri, dobbiamo capire quante risorse aggiuntive (come capacitร del processore, capacitร del disco, utilizzo della memoria o larghezza di banda della rete) sono necessarie per supportare l'utilizzo futuro.
- I test di resistenza vengono generalmente eseguiti sovraccaricando il sistema o riducendo determinate risorse di sistema e valutando le conseguenze.
- Viene eseguito per garantire che non si verifichino difetti o perdite di memoria dopo quello che รจ considerato un periodo di utilizzo relativamente "normale".
Cosa monitorare nei test di resistenza
Nei test di resistenza vengono testati i seguenti elementi.
- Testare la perdita di memoriaโ Vengono eseguiti controlli per verificare se sono presenti perdite di memoria nell'applicazione, che possono causare l'arresto anomalo del sistema o del sistema operativo
- Testare la chiusura della connessione tra gli strati del sistema โ Se la connessione tra gli strati del sistema non viene chiusa correttamente, alcuni o tutti i moduli del sistema potrebbero bloccarsi.
- Testare la chiusura della connessione al database con successoโ Se la connessione al database non viene chiusa correttamente, potrebbe verificarsi un arresto anomalo del sistema
- Testare il tempo di risposta โ Il sistema viene testato per il tempo di risposta del sistema poichรฉ l'applicazione diventa meno efficiente a causa dell'uso prolungato del sistema.
Come eseguire i test di resistenza
Di seguito รจ riportato l'approccio di test di base per il test di resistenza
- Ambiente di test โ Identificare l'hardware, il software, il sistema operativo richiesti per i test di resistenza, assegnando ruoli e responsabilitร all'interno del team, ecc. L'ambiente dovrebbe essere pronto prima dell'esecuzione del test. ร inoltre necessario stimare le dimensioni comuni di produzione del database e la crescita annuale. Ciรฒ รจ necessario in quanto tale รจ necessario testare come risponderร la tua applicazione dopo un anno, due o cinque.
- Creazione del piano di test, scenari โ In base alla natura del test: manuale o automatizzato o una combinazione di entrambi, Test Case la progettazione, le revisioni e l'esecuzione dovrebbero essere pianificate. Anche i test per stressare il sistema, i test sui punti di rottura, ecc. dovrebbero far parte del piano di test. Il test per stressare il sistema determina il punto di interruzione nell'applicazione.
- Stima del test โ Fornire la stima del tempo necessario per completare la fase di test. Dovrebbe essere analizzato sulla base del numero di tester coinvolti e del numero di cicli di prova richiesti.
- Analisi del rischio - Analizzare il rischio e intraprendere unโazione adeguata per la prevenzione. Assegnare la prioritร ai casi di test in base al fattore di rischio e identificare i rischi e i problemi riportati di seguito che il tester puรฒ eliminare gradualmente durante il test di resistenza.
- Le prestazioni rimarranno costanti nel tempo?
- Ci sono altri problemi minori che non sono stati ancora rilevati?
- C'รจ un'interferenza esterna che non รจ stata affrontata?
- Programma delle prove โ Determinare il budget e i risultati finali entro i tempi. COME Test di resistenza applica un carico enorme ma naturale di transazioni al sistema/applicazione per un periodo di tempo continuo.
Esempio di test di resistenza
Mentre Test da sforzo porta il sistema testato ai suoi limiti, Test di resistenza porta l'applicazione al suo limite nel tempo.
Ad esempio, i problemi piรน complessi โ perdite di memoria, utilizzo eccessivo del server di database e sistemi non responsivi โ si verificano quando il software viene eseguito per un periodo di tempo prolungato. Se si saltano i test di resistenza, le probabilitร di rilevare tali difetti prima della distribuzione sono piuttosto basse.
Strumenti per i test di resistenza
- Caricamento web
- LoadComplete
- Apache JMeter
- LoadRunner
- Avanzamento
- CaricaUI
- ApriSTA
- Rational Performance Tester
Vantaggi dei test di resistenza
- Aiuta a determinare come il carico di lavoro puรฒ gestire il sistema sotto carico.
- Fornisce dati accurati che il cliente puรฒ utilizzare per convalidare o migliorare le proprie esigenze infrastrutturali.
- Identifica i problemi di prestazioni che possono verificarsi dopo che un sistema รจ stato utilizzato ad alto livello per un periodo di tempo piรน lungo
- I problemi tipici vengono identificati in test prestazionali mirati piรน piccoli, il che significa che l'applicazione rimane disponibile anche in caso di carico enorme in un arco di tempo molto breve.
- Il test di resistenza viene utilizzato anche per verificare se si verifica un degrado delle prestazioni dopo un lungo periodo di esecuzione
Svantaggi dei test di resistenza
- Spesso รจ difficile definire quanto stress valga la pena applicare.
- I test di resistenza potrebbero causare guasti alle applicazioni e/o alla rete che potrebbero causare interruzioni significative Ambiente di test non sono isolati.
- La perdita o il danneggiamento permanente dei dati puรฒ verificarsi a causa di uno stress eccessivo del sistema.
- Lโutilizzo delle risorse rimane molto elevato una volta rimosso lo stress.
- Alcuni componenti dell'applicazione non rispondono.
- Le eccezioni non gestite vengono osservate dall'utente finale.
Come questo test si inserisce nella famiglia dei test di prestazione
Il termine "test di prestazione" รจ un termine generico. Le varianti descritte di seguito differiscono solo per la forma del carico applicato e per la durata del suo mantenimento, motivo per cui vengono spesso confuse tra loro.
| Tipo di test | Modello di carico | Domanda a cui risponde |
|---|---|---|
| Test di carico | Carico di picco previsto, di breve durata | Il sistema raggiunge i suoi obiettivi in โโcondizioni di traffico di punta normali? |
| Test da sforzo | Aumentato oltre la capacitร fino al cedimento | Dove si rompe e il fallimento viene gestito in modo elegante? |
| Test delle punte | Impennata estrema improvvisa, seguita da una fase di regressione. | Riuscirร a sopravvivere e a riprendersi da uno shock di traffico? |
| Test di resistenza | Carico normale mantenuto per molte ore | Le prestazioni si degradano nel tempo? |
| Test di immersione | Carico sostenuto per un periodo prolungato | Si sono verificate perdite di memoria o esaurimento delle risorse? |
| Test di stabilitร | Carico variabile in base alle condizioni | Il sistema rimane affidabile al variare delle condizioni? |
| Test volumetrico | Utenti normali, volume di dati molto elevato | Riesce a gestire la crescita del database? |
I test di resistenza e i test di immersione sono spesso considerati sinonimi. Nell'uso comune, entrambi i tipi di test prevedono il mantenimento di un carico prolungato. Laddove i team li distinguono, i test di resistenza si concentrano sul verificare se i tempi di risposta aumentano nel tempo, mentre i test di stress si concentrano sul consumo di risorse come memoria, handle di file e pool di connessioni. L'esecuzione di uno dei due test fornisce solitamente i risultati di entrambi.
Parametri chiave da rilevare durante il test
La qualitร di un test di performance dipende dalla qualitร delle registrazioni effettuate durante la sua esecuzione. Registra questi sei parametri sia sul server che sul client, quindi confrontali con i valori di riferimento anzichรฉ affidarti a una semplice intuizione.
| Metrico | Cosa ti dice | Segnale di pericolo |
|---|---|---|
| Tempo medio di risposta | Esperienza utente tipica | Qualsiasi deriva verso l'alto durante la corsa |
| tempo di risposta al 95ยฐ percentile | L'esperienza degli utenti piรน lenti | Ben al di sopra della media, il che significa incoerenza |
| Throughput | Richieste gestite al secondo | Caduta mentre il carico rimane costante |
| Tasso di errore | Percentuale di richieste non riuscite o scadute | Qualsiasi aumento al di sopra della soglia concordata |
| Utilizzo di CPU e memoria | margine di risorse del server | Memoria che sale e non ritorna mai |
| Connessioni al database e thread | Esaurimento della piscina | Conteggi che crescono costantemente senza rilascio |
Leggi insieme la media e il percentile. Una media di 800 ms con un 95ยฐ percentile di 900 ms descrive un sistema coerente. La stessa media con un 95ยฐ percentile di 9 secondi significa che un utente su venti sta avendo un'esperienza negativa e la media lo nasconde.
Osservate la forma, non solo il valore. In qualsiasi test di lunga durata, una linea delle risorse piatta indica un esito positivo, mentre una linea in aumento indica una perdita, anche quando il valore assoluto rientra ancora ampiamente nei limiti al momento della conclusione del test.
Test di resistenza: punti chiave
- In Software Engineering, Il test di resistenza รจ un sottoinsieme del test di carico.
- I test di resistenza sono un processo lungo e talvolta durano anche fino a un anno
- Si fanno controlli per verificare
- Testare la perdita di memoria
- Testare il tempo di risposta
- Testare la connessione al database, ecc.

