Cos'รจ il test di carico? (Esempi)

โšก Riepilogo intelligente

Il test di carico misura il comportamento di un'applicazione software quando molti utenti vi accedono contemporaneamente, fino al picco previsto. Permette di identificare la capacitร  operativa massima, i colli di bottiglia che la limitano e di verificare se l'infrastruttura attuale รจ sufficiente.

  • ๐Ÿ‘ฅ Definizione di base: Un test non funzionale che applica il carico massimo previsto degli utenti e ne misura la risposta.
  • ๏ธ Indicatore principale: Tempo di risposta, che deve essere quantitativo, pertinente, realistico, raggiungibile e misurabile.
  • ???? ๏ธ Cosa rileva: Capacitร  massima, lacune infrastrutturali, limiti del database e problemi di configurazione.
  • ๐Ÿ“‰ Carico vs. sollecitazione: Il carico si arresta al picco previsto; la sollecitazione lo supera deliberatamente per trovare il punto di rottura.
  • ๏ธ Opzioni utensili: JMeterGatling e k6 sono open source; LoadRunner รจ la scelta commerciale consolidata.
  • ๐Ÿ“‹ Prerequisiti: Eseguilo solo quando l'applicazione รจ funzionalmente stabile, altrimenti i difetti mascherano i risultati delle prestazioni.

Che cos'รจ il test di carico?

Cos'รจ il test di carico?

Caricare i test รจ un processo di test software non funzionale in cui le prestazioni dell'applicazione software vengono testate sotto uno specifico carico previsto. Determina il comportamento dell'applicazione software mentre piรน utenti vi accedono contemporaneamente. L'obiettivo del test di carico รจ migliorare i colli di bottiglia delle prestazioni e garantire stabilitร  e funzionamento regolare dell'applicazione software prima della distribuzione.

Questo test di solito identifica:

  • La capacitร  operativa massima di un'applicazione
  • Determinare se l'infrastruttura attuale รจ sufficiente per eseguire l'applicazione
  • Sostenibilitร  dell'applicazione rispetto al carico massimo di utenti
  • Numero di utenti simultanei che un'applicazione puรฒ supportare e scalabilitร  per consentire a piรน utenti di accedervi.

รˆ un tipo di test non funzionale. Nell'ingegneria del software, il test di carico viene comunemente utilizzato per applicazioni client/server basate sul Web, sia Intranet che Internet.

Caricare i test

Perchรฉ รจ necessario eseguire test di carico?

Alcuni siti estremamente popolari hanno subito gravi tempi di inattivitร  quando ottengono enormi volumi di traffico. I siti web di e-commerce investono molto nelle campagne pubblicitarie, ma non nei test di carico per garantire prestazioni ottimali del sistema, quando il marketing porta traffico.

Esempi di test di carico

  • Toysrus.com non รจ riuscito a gestire il traffico generato dalla propria campagna pubblicitaria, perdendo sia il budget di marketing che le vendite previste.
  • Il sito web di una compagnia aerea non รจ stato in grado di gestire piรน di 10000 utenti durante l'offerta di un festival.
  • L'Enciclopedia Britannica ha dichiarato l'accesso gratuito al suo database online come offerta promozionale. Non sono riusciti a tenere il passo con l'assalto del traffico per settimane.

Molti siti subiscono tempi di caricamento ritardati quando incontrano traffico intenso. Pochi fatti โ€“

  • Il tasso di abbandono aumenta drasticamente dopo circa 3 secondi di caricamento della pagina, e l'effetto si accentua sulle connessioni mobili.
  • Le pagine lente costano ai siti di e-commerce un fatturato misurabile a ogni visita, ed รจ per questo che le prestazioni sono considerate un parametro aziendale piuttosto che tecnico.

Perchรฉ eseguire i test di carico?

  • I test di carico danno fiducia nel sistema, nella sua affidabilitร  e prestazioni.
  • Il test di carico aiuta a identificare i colli di bottiglia nel sistema in scenari di stress intenso degli utenti prima che si verifichino in un ambiente di produzione.
  • I test di carico offrono un'eccellente protezione contro scarse prestazioni e consentono strategie complementari per la gestione delle prestazioni e il monitoraggio di un ambiente di produzione.

Obiettivi del test di carico

I test di caricamento identificano i seguenti problemi prima di spostare l'applicazione sul mercato o in produzione:

  • Tempo di risposta per ogni transazione
  • Prestazioni dei componenti del sistema sotto carichi diversi
  • Prestazioni dei componenti del database sotto carichi diversi
  • Ritardo di rete tra il client e il server
  • Problemi di progettazione del software
  • Problemi di configurazione del server come un server Web, un server delle applicazioni, un server di database ecc.
  • Problemi di limitazione hardware come massimizzazione della CPU, limitazioni di memoria, collo di bottiglia della rete, ecc.

Il test di carico determinerร  se il sistema necessita di essere messo a punto o se รจ necessaria una modifica dell'hardware e del software per migliorare le prestazioni. Per condurre in modo efficace i test di carico, รจ possibile utilizzarne diversi strumenti di test delle prestazioni disponibili per aiutarti a identificare le aree di miglioramento.

Prerequisiti per i test di carico

La metrica principale per il test di carico รจ il tempo di risposta. Prima di iniziare il test di carico, รจ necessario determinare:

  • Se il tempo di risposta รจ giร  misurato e confrontato โ€“ Quantitativo
  • Se il tempo di risposta รจ applicabile al processo aziendale โ€“ Rilevante
  • Se il tempo di risposta รจ giustificabile โ€“ Realistico
  • Se il tempo di risposta รจ realizzabile โ€“ Raggiungibile
  • Se il tempo di risposta รจ misurabile utilizzando uno strumento o un cronometro: misurabile

Configurazione dell'ambiente prima del test di carico.

Piattaforma hardware Configurazione software
  • Macchine server
  • Processori
  • Memorie
  • Archiviazione su disco
  • Carica la configurazione delle macchine
  • Configurazione di rete
  • Operasistema di ting
  • Software server

Strategie di test di carico

Esistono molti modi per eseguire test di carico. Di seguito sono riportate alcune strategie di test di carico:

Strategie di prova di carico

  • Test di carico manuale: Questa รจ una delle strategie per eseguire test di carico, ma non produce risultati ripetibili, non puรฒ fornire livelli misurabili di stress su un'applicazione ed รจ un processo impossibile da coordinare.
  • Strumenti di test di carico sviluppati internamente: Un'organizzazione, che comprende l'importanza dei test di carico, puรฒ creare i propri strumenti per eseguire test di carico.
  • Strumenti di test di carico open source: Sono disponibili diversi strumenti di test del carico come open source gratuiti. Potrebbero non essere sofisticati come le loro controparti a pagamento, ma se hai un budget limitato, sono la scelta migliore.
  • Strumenti per test di carico di classe enterprise: Di solito sono dotati di funzionalitร  di acquisizione/riproduzione. Supportano un gran numero di protocolli. Possono simulare un numero eccezionalmente elevato di utenti.

Come eseguire il test di carico

Il processo di test di carico puรฒ essere brevemente descritto come di seguito:

  1. Crea un file dedicato Ambiente di test per prove di carico
  2. Definire gli scenari di test di carico
  3. Determinare le transazioni di test di carico per un'applicazione
    • Preparare i dati per ogni transazione
    • รˆ necessario prevedere il numero di utenti che accedono al sistema
    • Determina la velocitร  di connessione. Alcuni utenti possono essere collegati tramite linee affittate mentre altri possono utilizzare la connessione remota
    • Determinare i diversi browser e sistemi operativi utilizzati dagli utenti 
    • Una configurazione di tutti i server come server Web, applicazioni e DB
  4. Esecuzione e monitoraggio dello scenario di test. Raccolta di vari parametri
  5. Analizzare i risultati. Formula raccomandazioni
  6. Ottimizzare il sistema
  7. Riprova

Linee guida per i test di carico

Linee guida per il test di carico

  1. Il test di carico dovrebbe essere pianificato una volta che l'applicazione diventa funzionalmente stabile.
  2. Nel pool di dati dovrebbe essere pronto un gran numero di dati univoci
  3. Il numero di utenti dovrebbe essere deciso per ogni scenario o script
  4. Evitare la creazione di log dettagliati per conservare lo spazio di I/O su disco
  5. Cerca di evitare il download di immagini nel sito
  6. Nel processo di esecuzione dei casi di test del test di carico, รจ necessario registrare la coerenza del tempo di risposta nel periodo trascorso e confrontarlo con varie esecuzioni di test.

Differenza tra test di carico e stress

Caricare i test Test di stress
Il test di carico identifica i colli di bottiglia nel sistema sotto vari carichi di lavoro e controlla come il sistema reagisce quando il carico viene gradualmente aumentato Test di stress determina il punto di rottura del sistema per rivelare il punto massimo oltre il quale si rompe.
Per riconoscere il limite superiore del sistema, imposta lo SLA dell'app e controlla come il sistema puรฒ gestire un carico pesante. Per verificare come si comporta il sistema sotto carichi estremi e come si riprende dopo un guasto.
Generare un carico maggiore su un'applicazione web รจ lo scopo principale del test di carico. Lo stress test mira a garantire che sotto un carico elevato improvviso per una durata considerevole i server non si blocchino.
Gli attributi che vengono controllati in un test di carico sono le prestazioni massime, la quantitร  di server e il tempo di risposta. Questo tipo di test verifica il tempo di risposta della stabilitร , ecc.
Nel test di carico il limite di carico รจ una soglia di interruzione. Nello stress test il limite di carico รจ superiore alla soglia di rottura.

Differenza tra test funzionali e di carico

Test di funzionalitร  Caricare i test
I risultati dei test funzionali sono facilmente prevedibili poichรฉ sono stati definiti passaggi e precondizioni adeguati I risultati dei test di carico sono imprevedibili
I risultati dei test funzionali variano leggermente I risultati del test di carico variano drasticamente
Frequenza di esecuzione Test di funzionalitร  sarร  alto La frequenza di esecuzione dei test di carico sarร  bassa
I risultati dei test funzionali dipendono dai dati del test Il test di carico dipende dal numero di utenti.

Strumenti di test di carico

LoadRunner

LoadRunner, originariamente di HP e ora parte di OpenText In seguito all'acquisizione di Micro Focus, il sistema testa le applicazioni in condizioni di carico normale e di picco. Genera carico tramite utenti virtuali che emulano il traffico di rete reale e riporta i risultati in forma grafica.

Leggi di piรน in Tutorial di LoadRunner.

Apache JMeter

Un open-source Java strumento e l'opzione gratuita piรน utilizzata. Supporta HTTP, JDBC, JMS, FTP e altro, memorizza i piani di test come XML e si integra nelle pipeline CI. Vedi il JMeter lezione per una guida dettagliata.

Gatling

Uno strumento open-source i cui test sono scritti come codice in Scala o JavaGestisce un elevato numero di processi simultanei anche su hardware di fascia bassa e produce report HTML dettagliati, il che รจ ideale per i team che preferiscono script di test con controllo di versione.

k6

Uno strumento open-source con test scritti in JavaScript progettato per i test di performance gestiti dagli sviluppatori all'interno di una pipeline CI, piuttosto che come attivitร  di QA separata.

Scegliere uno strumento

Pick JMeter Per la massima copertura dei protocolli senza costi aggiuntivi, si possono utilizzare Gatling o k6 quando il team desidera che i test siano mantenuti nel sistema di controllo versione insieme all'applicazione, mentre uno strumento commerciale come LoadRunner รจ indicato quando il supporto per i protocolli aziendali e l'assistenza del fornitore giustificano la licenza.

Vantaggi e svantaggi delle prove di carico

Di seguito sono riportati i vantaggi del test di carico:

  • Identificazione dei colli di bottiglia delle prestazioni prima della produzione
  • Migliora la scalabilitร  del sistema
  • Ridurre al minimo i rischi legati ai tempi di inattivitร  del sistema
  • Costi ridotti in caso di fallimento
  • Aumenta la soddisfazione del cliente

Svantaggi del test di carico:

  • La maggior parte degli strumenti richiede conoscenze di programmazione per poter creare script che riproducano scenari realistici.
  • Gli strumenti possono essere costosi poichรฉ i prezzi dipendono dal numero di utenti virtuali supportati.

Parametri chiave da rilevare durante un test di carico

La sezione dei prerequisiti stabilisce che il tempo di risposta รจ la metrica principale. In pratica, un report di test di carico deve avere sei cifre, perchรฉ il solo tempo di risposta non รจ sufficiente a spiegare il motivo del rallentamento del sistema.

Metrico Cosa ti dice Segnale di pericolo
Tempo medio di risposta L'esperienza utente tipica Aumenta all'aumentare del carico
tempo di risposta al 95ยฐ percentile L'esperienza degli utenti piรน lenti Ben al di sopra della media
Throughput Richieste gestite con successo al secondo Appiattimento o abbassamento all'aumentare del carico
Tasso di errore Percentuale di richieste non riuscite o scadute Qualsiasi aumento al di sopra della soglia concordata
Utenti concorrenti Sessioni simultanee effettivamente raggiunte Inferiore allo scenario previsto
Utilizzo delle risorse del server Margini di manovra per CPU, memoria, disco e rete. Qualsiasi risorsa superiore a circa l'80%

Visualizza la velocitร  di elaborazione insieme al tempo di risposta. L'aumento del tempo di risposta con l'aumento del throughput significa semplicemente che il sistema รจ piรน occupato. L'aumento del tempo di risposta con caduta Il superamento della capacitร  massima indica che il sistema ha superato la sua capacitร  massima e sta perdendo lavoro, ed รจ proprio questo il punto che il test si propone di individuare.

Non riportare mai solo la media. Una media di 900 ms con un 95ยฐ percentile di 1.1 secondi descrive un sistema coerente. La stessa media con un 95ยฐ percentile di 11 secondi significa che un utente su venti sta avendo un'esperienza inaccettabile che la media non nasconde.

Come si confronta questo test con altri test di performance?

I test di prestazione sono una famiglia di test che si differenziano per la forma del carico applicato, motivo per cui sono cosรฌ facilmente confusi.

Tipo di test Cosa aumenta? Domanda a cui risponde
Test di carico Utenti simultanei, fino al picco previsto Raggiunge gli obiettivi prefissati in condizioni di traffico di punta normali?
Test volumetrico Dati contenuti nel database Riesce a gestire la crescita del set di dati?
Test da sforzo Caricare oltre la capacitร , fino al cedimento Dove si rompe e in che modo?
Test delle punte Carica, istantaneamente ed estremamente Riesce a sopravvivere e a riprendersi da uno shock?
Test di resistenza Durata, a carico normale Le prestazioni si degradano nel tempo?
Test di immersione Durata, risorse di visualizzazione Sono presenti perdite di memoria o di handle?
Test di stabilitร  Condizioni variabili Rimane affidabile al variare delle condizioni?

La distinzione che conta di piรน qui รจ: I test di volume scalano i dati, i test di carico scalano il numero di utenti. Un report che impiega due secondi per elaborare diecimila righe e due minuti per elaborarne dieci milioni presenta un problema di volume, non di carico, e nessuna quantitร  di capacitร  aggiuntiva del server potrร  risolverlo.

DOMANDE FREQUENTI

I test di carico applicano il carico di picco previsto e verificano che gli obiettivi siano raggiunti. I test di stress superano deliberatamente la capacitร  per individuare il punto di rottura e confermare che il sistema si guasti e si riprenda in modo controllato.

Una volta che l'applicazione รจ funzionalmente stabile, e in una fase sufficientemente precoce da consentire ancora la risoluzione di un eventuale collo di bottiglia individuato, eseguirla nell'ultima settimana non lascia il tempo di intervenire sui risultati.

JMeterperchรฉ รจ gratuito, supporta la piรน ampia gamma di protocolli e ha la documentazione piรน completa. Passa a Gatling o k6 se il team preferisce test scritti come codice sotto controllo di versione.

L'intelligenza artificiale ricava profili di carico realistici dai log del traffico di produzione, rileva automaticamente le anomalie nei risultati e prevede quali modifiche al codice potrebbero compromettere le prestazioni prima che venga pianificata un'esecuzione.

Sรฌ. Gli strumenti di intelligenza artificiale convertono i percorsi utente registrati o le specifiche API in script eseguibili. Verifica i tempi di elaborazione generati e la parametrizzazione dei dati, poichรฉ valori non realistici producono risultati fuorvianti.

Riassumi questo post con: