Performance testing verso delle prestazioni al top
Sviluppate o volete sviluppare software o applicazioni web? Siete degli ingegneri informatici oppure dei CTO che lavorano alla riprogettazione di uno strumento in atto nella vostra azienda?
In un mercato altamente competitivo dove è necessario essere veloci e gli errori non sono permessi, con un software, un'applicazione web ad alte prestazioni o un sito web reattivo,un performing test è essenziale.
La buona notizia? Esistono soluzioni per automatizzare questa fase di test e accompagnarvi nella vostra produzione.
appvizer vi offre un'introduzione alle fasi e alle sfide del performance testing,nonché agli strumenti esistenti.
Il Performance Testing: una breve panoramica
Vediamo insieme i principali Performance Testing, che coprono sia criteri funzionali che tecnici, per identificare i comportamenti problematici di un sistema (bug) e correggerli.
Poiché i diversi risultati spesso si sovrappongono e il tempo e le risorse finanziarie sono limitate, è raro e inutile accumularli tutti.
© Global Online Trainings
Performance testing: definizione e obiettivi
Il Performance Testing determina la corretta esecuzione di un sistema informatico misurandone i tempi di risposta. Rientra nella serie di attività svolte dal Performance Engineering.
Il suo obiettivo è quello di fornire metriche sulla velocità dell'applicazione.
Il test delle prestazioni risponde così ad un'esigenza di velocità degli utenti e delle aziende.
Nel caso di test di prestazione continui, inizia all'inizio delle fasi di sviluppo, e viene adattato ad ogni fase del ciclo di vita dell'applicazione, fino al Load Testing
Le DevOps © NeoLoad
Gli obiettivi sono molteplici e consentono di :
- conoscere la capacità del sistema e i suoi limiti
- individuare e monitorare i suoi punti deboli
- ottimizzare le infrastrutture e i costi di esecuzione
- garantire che funzioni senza errori in determinate condizioni di carico
- ottimizzare i tempi di risposta per migliorare l'esperienza dell'utente (UX)
- verificare la stabilità tra la versione di produzione e la versione n+1
- riprodurre un problema di produzione
- anticipare un futuro scale-up, l'aggiunta di una funzione
- valutare la possibilità di installare un APM (application portfolio manager, application manager)
- garantire il corretto comportamento del sistema e delle sue applicazioni esterne di terzi, in caso di guasto e quindi di riconnessione, ecc.
I test presentati di seguito sono tutti test di prestazione, effettuati in condizioni specifiche.
Performance test vs Load and scalability test
Il Load Test misura il comportamento di un sistema basato sul carico di utenti simultanei previsto, chiamato popolazione target.
Aumentando il numero di utenti in maniera incrementale, cerca i limiti di capacità del sistema, per convalidare la qualità del servizio prima dell'implementazione.
Risponde alla domanda del carico massimo supportato.
Stress test, esame del punto di rottura
Oltre al test precedente, questo simulerà la massima attività prevista per tutti gli scenari funzionali combinati, al massimo livello di traffico, per vedere come il sistema reagisce in un contesto eccezionale (esplosione del numero di visite, guasto, ecc.).
Il test viene eseguito fino a quando il tasso di errore e i tempi di caricamento non sono più accettabili.
La pianificazione dei test delle prestazioni
A monte dello sviluppo di un software, di un'applicazione o di un sito web, è essenziale impostare una metodologia con :
- l'elaborazione del capitolato d'oneri e la definizione degli obiettivi,
- la costituzione del team del progetto web,
- pianificazione, comprese le fasi di test,
- il bilancio, ecc.
Tra gli altri tipi di test di performance che possiamo trovare abbiamo:
- Soak testing
- Spike testing
- Functional test
- Endurance testing
- application performing test
Gestione dei progetti web
I metodi agili sono sempre più diffusi nei progetti web, compreso il metodo Scrum che stabilisce :
- ruoli definiti
- un ritmo iterativo (test ripetuti e comparati)
- incontri specifici e limitati nel tempo
- una breve pianificazione dello sprint (tempo)
- un approccio Test Driven che consiste nello stabilire le regole di prova prima della codifica
- follow-up attraverso un grafico di progresso, ecc.
Il web project manager accompagna il suo team nella definizione degli obiettivi e nell'esecuzione della campagna di test.
Imposta dei tunings (parametrizzazioni) per migliorare il comportamento dell'applicazione, analizza le possibili cause di rallentamento con gli sviluppatori e convalida il monitoraggio con la produzione.
È importante che il team di progetto (webdevelopers, webdesigners, traffic managers, product managers, project managers) sia composto da membri del team di costruzione e del run team per avere una visione A to Z del progetto.
Questi diversi attori adattano i test per la produzione in base alla loro esperienza e al contesto.
Altre buone pratiche per una buona gestione dei progetti web includono :
- la realizzazione di una Proof Of Concept (POC), un metodo per garantire che il processo complessivo sia compreso e definire i ruoli di ogni persona;
- la pianificazione di periodi di prova durante i quali le squadre in prova assumono, a fine produzione, con il supporto tecnico delle squadre di costruzione.
Alcuni passaggi chiave del Performance Testing
Prima di iniziare, è importante assicurarsi di automatizzare i passaggi dei test, raccogliendo dati e generando rapporti, con lo strumento giusto.
È inoltre essenziale definire e calibrare correttamente gli scenari in modo che siano rappresentativi dell'utilizzo previsto in un determinato periodo di tempo.
Fase 1 - Identificazione dell'ambiente di prova, ambito di applicazione :
- i componenti testati (fronte, retro, magazzino)
- le pagine testate
- l’architettura SOA (dipendenze tra sottosistemi)
- vincoli dell'architettura (apparecchiature di rete, cache distribuita, ecc.)
Fase 2 - Determinazione dei criteri di accettazione (i requisiti) :
- la concorrenza di accesso/trasformazione (il numero di utenti simultanei)
- tempo di risposta
- il tempo di visualizzazione
- le risorse utilizzate
Fase 3 - Progettazione dello scenario:
- lanciare il test quando ci sono abbastanza dati da valutare
- documentare clic dopo clic per essere riprodotto in modo identico
- semplificare inizialmente (test a caldo) per convalidare la coerenza dell'infrastruttura
- declinare per tipo di utente e per funzionalità, ecc.
Passo 4 - Configurazione dell'ambiente di prova :
- impostazione delle sonde (agenti di misura) in ogni componente
- tenendo conto della loro influenza sul funzionamento del sistema
Fase 5 - Esecuzione dei test:
- con carico e iniettore di scenario
- raccolta di metriche
Fase 6 - Analizzare i risultati ed eseguire nuovamente i test:i
- ricercare modelli (scenari) che impediscano una buona esecuzione del sistema e del componente interessato
- redigere una diagnosi
Scelta delle metriche (indicatori chiave)
Non dovete selezionarne troppi alla volta, altrimenti non monitorerete nulla in modo adeguato e perderete di vista lo scopo della campagna di test.
Ci sono due tipi di metriche, commerciale e tecnica.
Metriche di business:
- il numero di pagine interrogate
- il tempo di risposta di una funzione o pagina (registrazione, pagamento)
- il numero di utenti simultanei
- il numero di operazioni per unità di tempo, ecc
Metriche tecniche :
- il carico della CPU: carico dell'unità centrale di elaborazione, cioè il carico del processore (% di occupazione e/o tempo di caricamento)
- l'attività media del sistema (media del carico)
- attività di rete (larghezza di banda consumata)
- attività del disco e occupazione
- occupazione di memoria (utilizzo della RAM)
- trasferimento dei dati durante il test (velocità di transazione o throughtput)
- attività di database
- Varnish cache hits and miss (comportamento del server di cache HTTP), ecc.
Software di performance testing
Uno strumento di gestione del test delle prestazioni generalmente include :
- Un iniettore di carico (o generatore di carico, motore di carico) che simula le azioni dell'utente e il carico di conseguenza.
Queste azioni vengono definite e poi registrate in programmi (script) che automatizzano gli scenari.
L'iniettore ha sempre un'API (interfaccia di programmazione) per gestire le richieste HTTP/HTTPS, o anche altri protocolli (SQL, Websocket, citrix, JMS...).
- Sonde, posizionate a livello del sistema target e dei suoi componenti, per riportare i dati di misura sul loro comportamento.
Si consiglia di dare la preferenza alle interfacce di programmazione disponibili in modo nativo all'interno dei componenti tecnici, in quanto l'uso di agenti può disturbare il funzionamento ottimale del sistema.
- Sonde, posizionate a livello del sistema target e dei suoi componenti, per riportare i dati di misura sul loro comportamento.
Perché adottare un software di Performance Testing?
Le soluzioni per il test delle prestazioni semplificano e automatizzano i test:
- creano scenari di simulazione
- li configurano con o senza script (programma dedicato)
- simulano utenti virtuali con la raccolta di misure
- collegano i dati
- generano automaticamente dei report, per l'utilizzo da parte di non esperti, a partire dalle metriche
Se siete a vostro agio con la programmazione, potete optare per un software open source, ma per i principianti, il software professionale vi farà risparmiare molto tempo e tranquillità.
SpiraTest
Sviluppato da Inflectra, SpiraTest è più di una soluzione di gestione dei test software online, è anche uno strumento di gestione collaborativa delle versioni e di gestione dei progetti web.
Dalla sua piattaforma unica, è possibile gestire tutti i requisiti, i test e gli incidenti, garantendo al contempo la piena tracciabilità durante il ciclo di prova.
NeoLoad
NeoLoad è un software di gestione test di fama mondiale. Tra i suoi vantaggi troverete la possibilità di effettuare i test in maniera più veloce ed efficiente ma al tempo stesso più frequentemente.
Si tratta dell’applicazione stabile e solida che vi permette di offrire uno strumento all’avanguardia ai vostri clienti.
Non correte rischi durante lo sviluppo della vostra applicazione web
Sviluppare un software web richiede mesi di lavoro. Effettuare test frequenti vi protegge dal rendervi conto solo alla fine delle problematiche strutturali che potrebbero costarvi i vostri clienti.
Dopo aver completato gli studi di management, è arrivata in stage ad Appvizer nel gennaio 2019. Inizialmente ha assunto il ruolo di Country Manager Italia per poi passare a quello di International Growth Manager. Grazie alla sua passione per il marketing digitale, oggi ricopre il ruolo di Marketing Manager.
- Expertise: SEO, SEA, Marketing Automation, Lead Generation, UX, Product Marketing, Comunicazione
- Education: Università degli Studi di Pavia
- Published works and citations: Perché i tuoi clienti non aprono le tue email? (Semrush, 2019)