Esercitazione sui test delle prestazioni
Cos'è il test delle prestazioni?
Test di Performance è un processo di test del software utilizzato per testare la velocità, il tempo di risposta, la stabilità, l'affidabilità, la scalabilità e l'utilizzo delle risorse di un'applicazione software con un particolare carico di lavoro. Lo scopo principale del test delle prestazioni è identificare ed eliminare i colli di bottiglia delle prestazioni nell'applicazione software. È un sottoinsieme dell'ingegneria delle prestazioni ed è anche noto come “Test delle prestazioni”.
L'obiettivo del test delle prestazioni è il controllo di un programma software
- Velocità – Determina se l'applicazione risponde rapidamente
- Scalabilità – Determina il carico utente massimo che l'applicazione software può gestire.
- Stabilità – Determina se l'applicazione è stabile sotto carichi variabili
Perché eseguire i test delle prestazioni?
Le caratteristiche e le funzionalità supportate da un sistema software non sono l'unica preoccupazione. Le prestazioni di un'applicazione software, come il tempo di risposta, l'affidabilità, l'utilizzo delle risorse e la scalabilità, sono importanti. L'obiettivo del test delle prestazioni non è trovare bug ma eliminare i colli di bottiglia delle prestazioni.
Il Performance Testing viene eseguito per fornire alle parti interessate informazioni sulla loro applicazione in merito a velocità, stabilità e scalabilità. Ancora più importante, il Performance Testing scopre cosa deve essere migliorato prima che il prodotto venga immesso sul mercato. Senza il Performance Testing, è probabile che il software soffra di problemi quali: esecuzione lenta mentre più utenti lo utilizzano contemporaneamente, incongruenze tra diversi sistemi operativi e scarsa usabilità.
I test delle prestazioni determineranno se il loro software soddisfa i requisiti di velocità, scalabilità e stabilità con i carichi di lavoro previsti. Le applicazioni inviate sul mercato con parametri prestazionali scadenti a causa di test prestazionali inesistenti o scadenti rischiano di guadagnarsi una cattiva reputazione e di non raggiungere gli obiettivi di vendita attesi.
Inoltre applicazioni mission-critical come i programmi di lancio nello spazio o le apparecchiature mediche salvavita, dovrebbero essere testati per garantire che funzionino per un lungo periodo senza deviazioni.
Secondo Dunn & Bradstreet, il 59% delle aziende Fortune 500 sperimenta circa 1.6 ore di inattività ogni settimana. Considerando che un’azienda media Fortune 500 con un minimo di 10,000 dipendenti paga 56 dollari l’ora, la parte manodopera dei costi di inattività per tale organizzazione sarebbe di 896,000 dollari settimanali, che si traducono in oltre 46 milioni di dollari all’anno.
Solo Tempo di inattività di 5 minuti di Google.com (19-ago-13) costerà al colosso della ricerca tanto quanto $ 545,000.
Si stima che le aziende abbiano perso valore delle vendite $ 1100 al secondo a causa di un recente Amazon Interruzione del servizio Web.
Pertanto, il test delle prestazioni è importante. Per aiutarti in questo processo, consulta questo elenco di strumenti di test delle prestazioni.
Tipi di test delle prestazioni
Esistono principalmente sei tipi di test delle prestazioni nel test del software, spiegati di seguito.
- Test di carico – verifica la capacità dell'applicazione di funzionare con i carichi utente previsti. L'obiettivo è identificare i colli di bottiglia delle prestazioni prima che l'applicazione software diventi operativa.
- Test da sforzo - implica testare un'applicazione con carichi di lavoro estremi per vedere come gestisce il traffico elevato o l'elaborazione dei dati. L'obiettivo è identificare il punto di rottura di un'applicazione.
- Test di resistenza – viene fatto per garantire che il software possa gestire il carico previsto per un lungo periodo di tempo.
- Test dei picchi – verifica la reazione del software a improvvisi picchi di carico generati dagli utenti.
- Test volumetrico – In fase di test del volume grande no. Di. I dati vengono inseriti in un database e il comportamento complessivo del sistema software viene monitorato. L'obiettivo è verificare le prestazioni dell'applicazione software con volumi di database variabili.
- Test di scalabilità – L'obiettivo del test di scalabilità è determinare l'efficacia dell'applicazione software nello “scaling up” per supportare un aumento del carico utente. Aiuta a pianificare l'aggiunta di capacità al sistema software.
Problemi comuni di prestazioni
La maggior parte dei problemi di prestazioni ruotano attorno a velocità, tempo di risposta, tempo di caricamento e scarsa scalabilità. La velocità è spesso uno degli attributi più importanti di un'applicazione. Un'applicazione lenta perderà potenziali utenti. I test delle prestazioni assicurano che un'app funzioni abbastanza velocemente da mantenere l'attenzione e l'interesse di un utente. Dai un'occhiata al seguente elenco di problemi di prestazioni comuni e nota come la velocità sia un fattore comune in molti di essi:
- Tempo di caricamento lungo – Il tempo di caricamento è normalmente il tempo iniziale impiegato da un'applicazione per avviarsi. Generalmente questo dovrebbe essere ridotto al minimo. Sebbene sia impossibile caricare alcune applicazioni in meno di un minuto, il tempo di caricamento dovrebbe essere mantenuto, se possibile, al di sotto di pochi secondi.
- Scarso tempo di risposta – Il tempo di risposta è il tempo necessario da quando un utente inserisce i dati nell'applicazione fino a quando l'applicazione invia una risposta a tale input. In generale, l'operazione dovrebbe essere molto rapida. Ancora una volta, se un utente deve aspettare troppo a lungo, perde interesse.
- Scarsa scalabilità – Un prodotto software soffre di scarsa scalabilità quando non è in grado di gestire il numero di utenti previsto o quando non soddisfa una gamma di utenti sufficientemente ampia. Caricare i test dovrebbe essere fatto per essere certi che l'applicazione possa gestire il numero previsto di utenti.
- Collo di bottiglia – I colli di bottiglia sono ostruzioni in un sistema che riducono le prestazioni complessive del sistema. Il collo di bottiglia si verifica quando errori di codifica o problemi hardware causano una diminuzione della velocità effettiva sotto determinati carichi. Il collo di bottiglia è spesso causato da una sezione di codice difettosa. La chiave per risolvere un problema di collo di bottiglia è trovare la sezione di codice che causa il rallentamento e provare a risolverlo lì. Il collo di bottiglia viene generalmente risolto risolvendo processi in esecuzione scadenti o aggiungendo ulteriore hardware. Alcuni colli di bottiglia prestazionali comuni sono
- Utilizzo della CPU
- Utilizzo della memoria
- Utilizzo della rete
- Operalimitazioni del sistema
- Uso del disco
Come eseguire i test delle prestazioni
La metodologia adottata per i test delle prestazioni può variare ampiamente, ma l'obiettivo dei test delle prestazioni rimane lo stesso. Può aiutare a dimostrare che il sistema software soddisfa determinati criteri di prestazione predefiniti. Oppure può aiutare a confrontare le prestazioni di due sistemi software. Può anche aiutare a identificare le parti del sistema software che ne riducono le prestazioni.
Di seguito è riportato un processo generico su come eseguire i test delle prestazioni
Passaggio 1) Identifica il tuo ambiente di test
Conosci il tuo ambiente di test fisico, l'ambiente di produzione e quali strumenti di test sono disponibili. Comprendi i dettagli delle configurazioni hardware, software e di rete utilizzate durante il test prima di iniziare il processo di test. Aiuterà i tester a creare test più efficienti. Aiuterà anche a identificare possibili sfide che i tester potrebbero incontrare durante le procedure di test delle prestazioni.
Passaggio 2) Identificare i criteri di accettazione delle prestazioni
Ciò include obiettivi e vincoli relativi alla produttività, ai tempi di risposta e all'allocazione delle risorse. È inoltre necessario identificare i criteri di successo del progetto al di fuori di questi obiettivi e vincoli. I tester dovrebbero avere il potere di stabilire criteri e obiettivi di prestazione perché spesso le specifiche del progetto non includono una varietà sufficientemente ampia di parametri di riferimento delle prestazioni. A volte potrebbe non essercene affatto. Quando possibile, trovare un'applicazione simile con cui confrontarsi è un buon modo per fissare obiettivi di prestazione.
Passaggio 3) Pianificare e progettare i test delle prestazioni
Determinare la probabile variazione dell'utilizzo tra gli utenti finali e identificare gli scenari chiave da testare per tutti i possibili casi d'uso. È necessario simulare una varietà di utenti finali, pianificare i dati dei test delle prestazioni e delineare quali parametri verranno raccolti.
Passaggio 4) Configurazione dell'ambiente di test
Preparare l'ambiente di test prima dell'esecuzione. Inoltre, organizzare strumenti e altre risorse.
Passaggio 5) Implementare la progettazione del test
Creare i test delle prestazioni in base alla progettazione del test.
Passaggio 6) Eseguire i test
Eseguire e monitorare i test.
Passaggio 7) Analizzare, ottimizzare e ripetere il test
Consolidare, analizzare e condividere i risultati dei test. Quindi ottimizzare e testare nuovamente per vedere se c'è un miglioramento o una diminuzione delle prestazioni. Poiché i miglioramenti generalmente diminuiscono ad ogni ripetizione del test, interrompere l'esecuzione quando il collo di bottiglia è causato dalla CPU. Quindi potresti avere la possibilità di prendere in considerazione l'opzione di aumentare la potenza della CPU.
Metriche di test delle prestazioni: parametri monitorati
I parametri di base monitorati durante i test delle prestazioni includono:
- Utilizzo del processore – quantità di tempo che il processore impiega nell'esecuzione di thread non inattivi.
- Utilizzo della memoria – quantità di memoria fisica disponibile per i processi su un computer.
- Tempo del disco – quantità di tempo in cui il disco è impegnato nell'esecuzione di una richiesta di lettura o scrittura.
- Larghezza di banda - mostra i bit al secondo utilizzati da un'interfaccia di rete.
- Byte privati – numero di byte allocati da un processo che non possono essere condivisi tra altri processi. Questi vengono utilizzati per misurare le perdite e l'utilizzo della memoria.
- Memoria impegnata – quantità di memoria virtuale utilizzata.
- Pagine di memoria/secondo – numero di pagine scritte o lette dal disco per risolvere gli errori di pagina hardware. Gli errori di pagina hardware si verificano quando il codice non proveniente dal working set corrente viene richiamato da altrove e recuperato da un disco.
- Errori di pagina/secondo – la velocità complessiva con cui le pagine di errore vengono elaborate dal processore. Ciò si verifica nuovamente quando un processo richiede codice esterno al suo working set.
- Interruzioni della CPU al secondo – è il numero medio di interrupt hardware che un processore riceve ed elabora ogni secondo.
- Lunghezza coda disco – è il numero medio di richieste di lettura e scrittura in coda per il disco selezionato durante un intervallo di campionamento.
- Lunghezza della coda di output della rete – lunghezza della coda dei pacchetti di output in pacchetti. Qualunque cosa più di due significa un ritardo e occorre fermare il collo di bottiglia.
- Totale byte di rete al secondo – la velocità con cui i byte vengono inviati e ricevuti sull'interfaccia, inclusi i caratteri di framing.
- Tempo di risposta - tempo da quando un utente inserisce una richiesta fino alla ricezione del primo carattere della risposta.
- Portata - la velocità con cui un computer o una rete riceve richieste al secondo.
- Quantità di pool di connessioni – il numero di richieste utente soddisfatte dalle connessioni in pool. Maggiore è il numero di richieste soddisfatte dalle connessioni nel pool, migliore sarà la prestazione.
- Numero massimo di sessioni attive – il numero massimo di sessioni che possono essere attive contemporaneamente.
- Rapporti di successo – Questo ha a che fare con il numero di SQL istruzioni gestite da dati memorizzati nella cache anziché da costose operazioni di I/O. Questo è un buon punto di partenza per risolvere i problemi di collo di bottiglia.
- Colpi al secondo – il no. di accessi su un server Web durante ogni secondo di un test di carico.
- Segmento di rollback – la quantità di dati di cui è possibile eseguire il rollback in qualsiasi momento.
- Blocchi del database – il blocco di tabelle e database deve essere monitorato e ottimizzato con attenzione.
- Le migliori attese – vengono monitorati per determinare quali tempi di attesa possono essere ridotti quando si ha a che fare con la velocità con cui i dati vengono recuperati dalla memoria
- Conteggio dei thread – La salute di un'applicazione può essere misurata dal n. dei thread in esecuzione e attualmente attivi.
- Raccolta dei rifiuti - Ha a che fare con la restituzione della memoria inutilizzata al sistema. La garbage collection deve essere monitorata per l'efficienza.
Esempio di casi di test di test delle prestazioni
- Caso di prova 01: Verificare che il tempo di risposta non sia superiore a 4 secondi quando 1000 utenti accedono contemporaneamente al sito web.
- Caso di prova 02: Verificare che il tempo di risposta dell'applicazione sotto carico rientri in un intervallo accettabile quando la connettività di rete è lenta
- Caso di prova 03: Controlla il numero massimo di utenti che l'applicazione può gestire prima che si blocchi.
- Caso di prova 04: Controllare il tempo di esecuzione del database quando vengono letti/scritti simultaneamente 500 record.
- Caso di prova 05: Controllare l'utilizzo della CPU e della memoria dell'applicazione e del server database in condizioni di carico di punta
- Caso di prova 06: Verificare il tempo di risposta dell'applicazione in condizioni di carico basso, normale, moderato e pesante.
Durante l'esecuzione effettiva del test delle prestazioni, termini vaghi come intervallo accettabile, carico pesante, ecc. vengono sostituiti da numeri concreti. Gli ingegneri delle prestazioni impostano questi numeri in base ai requisiti aziendali e al panorama tecnico dell'applicazione.
Strumenti di test delle prestazioni
Sul mercato è disponibile un’ampia varietà di strumenti per testare le prestazioni. Lo strumento scelto per il test dipenderà da molti fattori come i tipi di protocollo supportato, il costo della licenza, i requisiti hardware, il supporto della piattaforma, ecc. Di seguito è riportato un elenco degli strumenti di test comunemente utilizzati.
- HP LoadRunner - è lo strumento di test delle prestazioni più popolare oggi sul mercato. Questo strumento è in grado di simulare centinaia di migliaia di utenti, sottoponendo le applicazioni a carichi reali per determinarne il comportamento sotto i carichi previsti. Caricatore è dotato di un generatore di utenti virtuali che simula le azioni di utenti umani in carne e ossa.
- JMeter – uno degli strumenti principali utilizzati per i test di carico di server Web e applicazioni.
FAQ
Conclusione
In Software Engineering, Il test delle prestazioni è necessario prima di commercializzare qualsiasi prodotto software. Garantisce la soddisfazione del cliente e protegge l'investimento dell'investitore dal fallimento del prodotto. I costi dei test delle prestazioni sono generalmente più che compensati dal miglioramento della soddisfazione, della fidelizzazione e della fidelizzazione del cliente.