La performance engineering è un’operazione end-to-end proattiva e continua di monitoraggio e performance testing delle applicazioni. Consente una collaborazione perfetta tra team, strumenti e processi attraverso cicli di feedback costanti. In questo caso, i tester non sono i soli responsabili del controllo della qualità, ma condividono questo compito con sviluppatori, performance engineer, proprietari dei prodotti e analisti aziendali.
“La performance engineering rappresenta un cambiamento culturale nella visione dei processi essenziali da parte delle organizzazioni e sfrutta prassi e funzionalità che creano qualità e prestazioni all’interno di un’organizzazione.” - Podcast di Joe Colantonio di Test Guild: Sei tendenze principali per le prestazioni nel 2020 e oltre
Grazie all’uso di strumenti di dimensioni adeguate da parte di sviluppatori e performance engineer, la performance engineering consente di eseguire la performance testing con un approccio shift-left e il monitoraggio delle prestazioni delle applicazioni con un approccio shift-right. È difficile comprendere in che misura la performance engineering attinge dalla performance testing tradizionale senza avere una conoscenza della performance testing classica.
La performance testing classica è un sottoinsieme della performance engineering. In genere comporta l’esecuzione un unico ciclo di test di carico nell’ambito del controllo di qualità (QA) post-sviluppo. La performance testing controlla la velocità, l’affidabilità, la scalabilità, la stabilità, il tempo di risposta e l’utilizzo delle risorse di un’applicazione nel workload previsto. Prima di analizzare le differenze tra performance engineering e performance testing, esamineremo quest’ultima isolandola e spiegheremo perché, da sola, non è più sostenibile.
Analizziamo le principali differenze tra performance engineering e performance testing.
Attraverso i seguenti concetti, DevOps e performance engineering offrono risultati coerenti in termini di prestazioni di produzione, consentendo ai clienti di installare le applicazioni in modo efficiente e con maggiore fiducia e di implementare software stabile e ad alte prestazioni conforme alle aspettative degli utenti.
La performance engineering offre un’ottimizzazione end-to-end del sistema attraverso un processo continuo di verifica e monitoraggio adottando un approccio shift-left per i test del carico e delle prestazioni nel processo di sviluppo. Questo metodo è diverso dalla performance testing tradizionale, in cui le verifiche venivano eseguite dopo la stabilizzazione dei test funzionali e il rilascio del codice.
Una volta rilasciato il codice, la performance engineering monitora l’app in produzione attraverso gli strumenti di monitoraggio delle prestazioni delle applicazioni (APM).
La performance engineering consente la collaborazione tra gli stakeholder del progetto, dagli analisti aziendali agli sviluppatori. Mantenere livelli di prestazioni elevati che migliorano l’esperienza dei clienti, tenere il passo dell’azienda e gestire le prestazioni end-to-end non spetta solo a performance engineer/tecnici addetti al controllo di qualità, ma coinvolge tutti. Ecco come.
Il Centro di eccellenza (CoE) per i test funge da consulente di fiducia per i test e da custode delle best practice. Il CoE supporta varie business unit e diversi metodi di test (come DevOps e Agile) e ha la flessibilità per suggerire strumenti di test e performance testing in base alle esigenze. Per creare modelli di verifica migliori e perfezionare la qualità dei test, il CoE funge da unico punto di consolidamento e riutilizzo dei dati generati e raccolti in più business unit nel tempo.
Il performance engineer fornisce una visione olistica di tutto il codice in fase di sviluppo per garantire criteri di performance testing completi, di ampio respiro e che tengano conto di ogni singola parte di codice in sviluppo. Il performance engineer è il principale utilizzatore degli strumenti di performance testing e vanta un alto livello di competenza nello scripting, nella progettazione, nell'esecuzione e nell’analisi dei risultati dei test. Interviene nella fase iniziale dello sviluppo per fornire metriche sulle prestazioni e scenari volti a valutare se il codice può essere considerato pronto per il rilascio. Questo coinvolgimento precoce permette al performance engineer di garantire che la soluzione soddisfi le aspettative di prestazioni stabilite all’inizio dello sviluppo e di confermare che l’architettura e il design si mantengano coerenti durante l’intera fase di sviluppo.
Gli sviluppatori sono esperti di codifica, ma spesso non hanno grandi competenze in ambito di verifiche funzionali e performance testing. Operano nel loro ambiente di sviluppo integrato (IDE) e tendono a utilizzare i loro strumenti preferiti mostrando poca propensione a provarne di nuovi. La performance engineering utilizza un approccio shift-left per la performance testing affidandone la responsabilità allo sviluppatore software. Con l’input del performance engineer, gli sviluppatori software possono eseguire la performance testing in fase di scrittura del codice, che viene rilasciato solo se risulta conforme ai criteri della performance testing.
La figura del DevTester non è contemplata nella performance testing classica poiché esistono chiare distinzioni tra sviluppatori software e performance engineer. Nella performance engineering, il DevTester funge da punto di collegamento tra i team di performance engineering e degli sviluppatori colmando il divario grazie a solide capacità di codifica e test, pur avendo competenze inferiori rispetto a sviluppatori e performance engineer. Il DevTester è in grado di eseguire i test rapidamente e ha una maggiore propensione all’uso di strumenti diversi rispetto agli sviluppatori.
Adottando un approccio di tipo shift-right per il test, la performance engineering coinvolge analisti aziendali e application engineer. Ciò garantisce che i requisiti di prestazione aziendali e delle applicazioni che definiscono la qualità dell’esperienza dell’utente siano inclusi nei criteri di valutazione delle prestazioni. Questi due ruoli monitorano l’app in produzione garantendo sempre prestazioni impeccabili.
La performance engineering sta trasformando il panorama dello sviluppo del software e le descrizioni delle mansioni di tutte le figure professionali coinvolte. Il maggior numero di ruoli comporta più che mai la necessità di strumenti e tecnologie per semplificare il processo. La performance engineering richiede integrazione end-to-end e collaborazione da destra a sinistra e da sinistra a destra, oltre ad analisi e approfondimenti in tempo reale. I fornitori di performance testing non sono attrezzati come dovrebbero per far fronte a questa ondata di cambiamenti caotici. Micro Focus, tuttavia, ha l'esperienza comprovata e le soluzioni tecnologiche necessarie per trasformare il caos dei test in ordine.
L’architettura aperta della performance engineering di Micro Focus supporta i test su qualsiasi tipo di protocollo e applicazione in qualsiasi ambiente di sviluppo. Consente agli stakeholder, dagli sviluppatori agli analisti aziendali, di utilizzare numerosi strumenti di fornitori e open source per consentire l’integrazione completa di CI/CD su larga scala. Le integrazioni degli strumenti Micro Focus consentono di eliminare rapidamente i tempi di attesa nelle fasi di sviluppo e test che rallentano la consegna delle applicazioni creando velocemente delle simulazioni realistiche di API, condizioni di rete e servizi virtuali. Le soluzioni di performance engineering di Micro Focus si basano sull'infrastruttura cloud o on-premise esistente e promuovono il riutilizzo delle risorse in modo da sfruttare gli investimenti già effettuati. Ciò consente una rapida scalabilità per soddisfare le esigenze di performance testing di più applicazioni all’interno dell’azienda.
La performance testing tradizionale veniva avviata solo al termine dei test funzionali e iniziava a identificare difetti e cause principali solo al termine della sua esecuzione. La performance engineering di Micro Focus prevede misurazioni e analisi end-to-end continue dei difetti per individuare la causa principale in tempo reale anche prima della fine della verifica delle prestazioni. I criteri di valutazione delle prestazioni sono inclusi nella definizione e nei requisiti “finali”. L'analisi in tempo reale di Micro Focus aiuta il performance engineer a fornire un feedback rapido allo sviluppatore, in modo da avviare tempestivamente la risoluzione dei problemi fin dalle prime fasi del processo di sviluppo. Il monitoraggio sintetico e il monitoraggio degli utenti reali in produzione forniscono informazioni sui problemi di prestazioni non rilevati dai test e che devono essere risolti nella release successiva. L’acquisizione e l’analisi delle opinioni degli utenti finali dal punto di vista delle prestazioni fornisce un feedback più specifico agli sviluppatori consentendo di ottimizzare l’applicazione per migliorarne le prestazioni.
Scoprite come adottare un approccio combinato di performance engineering "shift left" e "shift right" per costruire un’organizzazione di sviluppo software altamente produttiva.