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.

  • ๐Ÿ•’ Carico sostenuto: Il traffico di produzione previsto si protrae per ore o giorni, anzichรฉ per minuti.
  • ๐Ÿ“‰ Focus sul degrado: La questione รจ se i tempi di risposta tendano ad aumentare, non se l'obiettivo venga raggiunto una volta per tutte.
  • ???? Risultati comuni: Perdite di memoria, esaurimento del pool di connessioni e crescita illimitata del log o della cache.
  • ๐Ÿ“Š Set di monitoraggio: Memoria, CPU, tempo di risposta, throughput e connessioni al database durante l'intera esecuzione.
  • ๏ธ Tooling: Gli strumenti di carico standard gestiscono il traffico, mentre gli strumenti APM registrano le curve di utilizzo delle risorse.
  • ๏ธ Scambio: I risultati sono preziosi ma lenti da ottenere, il che limita la frequenza con cui รจ possibile eseguire il test.

Che cos'รจ un test di resistenza?

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

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

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.

DOMANDE FREQUENTI

I test di carico verificano che il sistema raggiunga i suoi obiettivi al carico massimo per un breve periodo. I test di resistenza mantengono un carico normale per ore per verificare se tali obiettivi vengono mantenuti al termine del test.

Qualsiasi tendenza al rialzo prolungata nei tempi di risposta o nell'utilizzo delle risorse, anche se non viene superata alcuna soglia. Il difetto risiede nella deriva stessa, perchรฉ alla fine supererร  il limite in produzione.

Dopo aver superato i test funzionali e di carico, e con sufficiente anticipo da poter correggere eventuali perdite di memoria individuate, eseguirli la notte prima del rilascio non lascia il tempo di intervenire sui risultati.

Il monitoraggio basato sull'intelligenza artificiale rileva il punto in cui una metrica cambia tendenza e lo correla con implementazioni o attivitร  programmate, trasformando ore di grafici in un sospetto specifico.

Puรฒ essere utile per stabilire le prioritร . I โ€‹โ€‹modelli di rischio evidenziano quali release contengono codice soggetto a fughe di dati, in modo che le esecuzioni complete siano riservate alle modifiche che con maggiore probabilitร  ne avranno bisogno.

Riassumi questo post con: