Esercitazione sui test delle prestazioni
โก Riepilogo intelligente
Il test delle prestazioni รจ un processo di test del software che valuta la velocitร , il tempo di risposta, la stabilitร , la scalabilitร e l'utilizzo delle risorse di un'applicazione in presenza di carichi di lavoro specifici. Consente di identificare ed eliminare i colli di bottiglia prima del rilascio, garantendo l'affidabilitร in condizioni reali.

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 Performance Testing รจ verificare che un programma software:
- Velocitร โ Determina se l'applicazione risponde rapidamente
- Scalabilitร โ Determina il carico massimo di utenti che l'applicazione software puรฒ gestire
- Stabilitร โ Determina se l'applicazione รจ stabile sotto carichi variabili
PFLB si concentra su test di performance di precisione che aiutano i sistemi a rimanere stabili anche in presenza di carichi di lavoro imprevedibili. I suoi servizi comprendono test di carico, test di picco e misurazione della latenza, con una forte attenzione all'identificazione del degrado delle prestazioni prima che questo abbia un impatto sugli utenti finali.
Perchรฉ il test delle prestazioni รจ importante?
Le caratteristiche e le funzionalitร supportate da un sistema software non sono l'unico aspetto da considerare. Anche 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 Performance Testing non รจ trovare bug, ma eliminare i colli di bottiglia prestazionali.
I test di performance vengono eseguiti per fornire agli stakeholder informazioni sulla velocitร , la stabilitร e la scalabilitร della loro applicazione. Ancora piรน importante, i test di performance rivelano cosa deve essere migliorato prima che il prodotto venga immesso sul mercato. Senza test di performance, il software rischia di presentare problemi come rallentamenti quando viene utilizzato contemporaneamente da piรน utenti, incongruenze tra diversi sistemi operativi e scarsa usabilitร .
I test di performance determinano se il software soddisfa i requisiti di velocitร , scalabilitร e stabilitร in condizioni di carico di lavoro previste. Le applicazioni immesse sul mercato con metriche di performance scadenti a causa di test di performance inesistenti o inadeguati rischiano di acquisire una cattiva reputazione e di non raggiungere gli obiettivi di vendita previsti.
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 of GoogleSi stima che .com (19-ago-13) costerร al gigante della ricerca quanto $ 545,000.
Si stima che le aziende abbiano perso vendite per un valore $ 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 โ Questo processo viene eseguito per garantire che il software sia in grado di gestire il carico previsto per un lungo periodo di tempo. Aiuta a rilevare problemi come perdite di memoria e esaurimento delle risorse che si manifestano solo durante un funzionamento prolungato.
- Test dei picchi โ Questo test verifica la reazione del software a improvvisi e consistenti picchi di carico generati dagli utenti. A differenza dei test di stress, i test di picco si concentrano specificamente su come il sistema gestisce e si riprende da improvvisi e brevi aumenti di traffico.
- Test del volume โ Consiste nel popolare un database con un grande volume di dati e nel monitorare il comportamento complessivo del sistema software. L'obiettivo รจ verificare le prestazioni dell'applicazione software in presenza di volumi di dati variabili nel database.
- Test di scalabilitร โ Determina l'efficacia dell'applicazione software nel "scalare" per supportare un aumento del carico di utenti. Aiuta a pianificare l'aumento di capacitร del sistema software.
Problemi comuni di prestazioni
La maggior parte dei problemi di prestazioni riguarda 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 di performance garantiscono che un'applicazione funzioni abbastanza velocemente da mantenere l'attenzione e l'interesse dell'utente. Di seguito sono elencati alcuni problemi di prestazioni comuni in cui la velocitร รจ un fattore ricorrente:
- Tempo di caricamento lungo โ Il tempo di caricamento รจ in genere il tempo iniziale necessario all'avvio di un'applicazione. Questo tempo dovrebbe essere ridotto al minimo. Sebbene sia impossibile far caricare alcune applicazioni in meno di un minuto, il tempo di caricamento dovrebbe essere mantenuto al di sotto di pochi secondi, se possibile.
- Scarso tempo di risposta โ Il tempo di risposta รจ il tempo che intercorre tra l'inserimento dei dati da parte dell'utente nell'applicazione e la visualizzazione della risposta. In genere, dovrebbe essere molto rapido. Se l'utente deve attendere 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 ostacoli in un sistema che ne degradano le prestazioni complessive. Un collo di bottiglia si verifica quando errori di programmazione o problemi hardware causano una diminuzione della velocitร di elaborazione sotto determinati carichi. Spesso il collo di bottiglia รจ causato da una sezione di codice difettosa. La chiave per risolvere un problema di collo di bottiglia รจ individuare la sezione di codice che causa il rallentamento e cercare di correggerla lรฌ. Generalmente, i colli di bottiglia si risolvono correggendo i processi che funzionano male o aggiungendo hardware aggiuntivo. colli di bottiglia prestazionali comuni siamo:
- 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 รจ riportata una procedura generica per l'esecuzione di test di performance.

Passaggio 1) Identifica il tuo ambiente di test
ร fondamentale conoscere l'ambiente di test fisico, l'ambiente di produzione e gli strumenti di test disponibili. Prima di iniziare i test, รจ importante comprendere i dettagli delle configurazioni hardware, software e di rete utilizzate. Questo aiuterร i tester a creare test piรน efficienti e a identificare le possibili difficoltร che potrebbero incontrare durante le procedure di test delle prestazioni.
Passaggio 2) Identificare i criteri di accettazione delle prestazioni
Ciรฒ include obiettivi e vincoli relativi a produttivitร , tempi di risposta e allocazione delle risorse. ร inoltre necessario identificare i criteri di successo del progetto al di fuori di questi obiettivi e vincoli. I tester dovrebbero essere autorizzati a definire criteri e obiettivi di prestazione, poichรฉ spesso le specifiche del progetto non includono una varietร sufficientemente ampia di benchmark di prestazione. A volte potrebbero non essercene affatto. Quando possibile, trovare un'applicazione simile con cui confrontarsi รจ un buon modo per definire gli obiettivi di prestazione.
Passaggio 3) Pianificare e progettare i test delle prestazioni
Determinare come รจ probabile che l'utilizzo vari 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 per i test delle prestazioni e definire quali metriche verranno raccolte.
Passaggio 4) Configurare l'ambiente di test
Preparare l'ambiente di test prima dell'esecuzione. Inoltre, predisporre gli strumenti e le altre risorse necessarie. Riprodurre l'ambiente di produzione nel modo piรน fedele possibile per garantire che i risultati dei test siano realistici e utilizzabili.
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.
Fase 7) Analizzare, ottimizzare e ritestare
Consolida, analizza e condividi i risultati dei test. Quindi perfeziona e ripeti i test per verificare se si riscontrano miglioramenti o peggioramenti delle prestazioni. Poichรฉ i miglioramenti tendono a diminuire a ogni ripetizione del test, interrompi i test quando il collo di bottiglia รจ causato dalla CPU. A quel punto potresti dover valutare 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 โ la quantitร di tempo che il processore impiega nell'esecuzione di thread non inattivi.
- Utilizzo della memoria โ la quantitร di memoria fisica disponibile per i processi su un computer.
- Tempo del disco โ la quantitร di tempo in cui il disco รจ occupato 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 โโโ Il numero di byte allocati da un processo che non possono essere condivisi con altri processi. Questi vengono utilizzati per misurare le perdite di memoria e l'utilizzo della memoria.
- Memoria impegnata โ la quantitร di memoria virtuale utilizzata.
- Pagine di memoria/secondo โ Il numero di pagine scritte o lette dal disco per risolvere gli errori di pagina permanenti. Gli errori di pagina permanenti si verificano quando del codice non appartenente al set di lavoro corrente viene richiamato da un'altra posizione 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 quando un processo richiede codice esterno al suo set di lavoro.
- Interruzioni della CPU al secondo โ Il numero medio di interruzioni 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 โ la lunghezza della coda dei pacchetti in uscita in pacchetti. Qualsiasi valore superiore a due indica un ritardo e il collo di bottiglia deve essere eliminato.
- 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 - Il tempo che intercorre tra l'inserimento di una richiesta da parte dell'utente e la ricezione del primo carattere della risposta.
- Portata - la frequenza 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 si riferisce al 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 numero di accessi a 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 โ monitorato per determinare quali tempi di attesa possono essere ridotti quando si tratta di quanto velocemente i dati vengono recuperati dalla memoria.
- Conteggio dei thread โ Lo stato di salute di un'applicazione puรฒ essere misurato dal numero di thread in esecuzione e attualmente attivi.
- Raccolta dei rifiuti - Consiste nel restituire al sistema la memoria inutilizzata. L'efficienza della raccolta dei rifiuti (garbage collection) deve essere monitorata.
Esempio di casi di test di test delle prestazioni
Di seguito sono riportati alcuni esempi di casi di test per il collaudo delle prestazioni:
- Caso di prova 01: Verificare che il tempo di risposta non superi i 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: Verificare l'utilizzo della CPU e della memoria dell'applicazione e del server di database in condizioni di carico massimo.
- 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.
Test delle prestazioni migliori pratiche
Seguire le migliori prassi consolidate garantisce che i test di performance forniscano risultati affidabili. Queste linee guida aiutano i team a evitare gli errori piรน comuni.
- Rispecchia l'ambiente di produzione โ Configurate la vostra configurazione di test in modo che rispecchi il piรน fedelmente possibile l'ambiente di produzione. Differenze nelle versioni hardware o software possono produrre risultati fuorvianti.
- Progettare scenari di test realistici โ Crea casi di test che simulino il comportamento reale degli utenti, inclusi i tempi di attesa e le combinazioni di transazioni simultanee.
- Utilizzare metriche basate sui percentili โ ร preferibile basarsi sui tempi di risposta al 90ยฐ e al 95ยฐ percentile piuttosto che sulle sole medie. I percentili mettono in luce la latenza nella parte finale del ciclo di risposta, che le medie possono nascondere.
- Eseguire test precoci e continui โ Integra i test di performance nella pipeline CI/CD anzichรฉ considerarli un'attivitร della fase finale.
- Documentare e risultati di base โ Registra i risultati di ogni esecuzione del test. Confrontare i nuovi risultati con i valori di riferimento semplifica l'individuazione di regressioni tra le diverse versioni.
Come l'IA sta trasformando i test di performance
L'intelligenza artificiale รจ reshaping Test delle prestazioni tramite l'automazione di complesse attivitร di analisi e l'abilitazione di capacitร predittive. Gli strumenti basati sull'intelligenza artificiale analizzano i dati storici, rilevano modelli e forniscono raccomandazioni concrete senza richiedere l'intervento umano in ogni fase.
- Rilevamento predittivo delle anomalie โ Gli algoritmi di intelligenza artificiale analizzano i parametri di prestazione in tempo reale durante i test di carico e segnalano le anomalie prima che si trasformino in guasti critici.
- Analisi automatizzata delle cause principali โ Gli strumenti basati sull'intelligenza artificiale correlano i dati provenienti da sistemi distribuiti per individuare con precisione i componenti che causano il degrado delle prestazioni.
- Ottimizzazione intelligente dei test โ I modelli di apprendimento automatico identificano scenari di test ridondanti e suggeriscono configurazioni ottimali, riducendo i tempi di esecuzione pur mantenendo la copertura.
- Script di test di autoriparazione โ L'intelligenza artificiale adatta gli script di test al variare delle interfacce dell'applicazione, riducendo i costi di manutenzione delle suite di test delle prestazioni.
Strumenti di test delle prestazioni
Sul mercato รจ disponibile un'ampia varietร di strumenti per il test delle prestazioni. La scelta dello strumento piรน adatto dipenderร da diversi fattori, come i tipi di protocollo supportati, il costo della licenza, i requisiti hardware e la compatibilitร con diverse piattaforme. Di seguito รจ riportato un elenco degli strumenti di test piรน diffusi.
- HP LoadRunner - รจ uno degli strumenti di test delle prestazioni piรน popolari sul mercato. Questo strumento รจ in grado di simulare centinaia di migliaia di utenti, sottoponendo le applicazioni a carichi reali per determinarne il comportamento in condizioni di carico previste. LoadRunner รจ dotato di un generatore di utenti virtuali che simula le azioni di utenti umani in carne e ossa.
- JMeter - Uno dei principali strumenti open-source utilizzati per i test di carico di server web e applicativi. Supporta molteplici protocolli e offre ampie funzionalitร di reporting.


