Articoli
Tutorial
Guide interattive
In che modo i test automatizzati abilitano DevOps
L'automazione dei test aiuta i team di sviluppo a compilare, testare e rilasciare in modo più rapido e affidabile.
Anton Hristov
Product Manager presso mabl
Nei primi anni 2000, le aziende hanno iniziato ad adottare pratiche Agile, con un ciclo di vita di sviluppo accelerato caratterizzato da frequenti feedback dei clienti. Ciò ha determinato l'adozione di strumenti per la continuous integration e la continuous delivery, che automatizzavano i processi di build, test, configurazione e distribuzione.
Tuttavia, funzioni chiave come sviluppo, test e consegna in produzione venivano eseguite da team separati che operavano all'interno dei propri silos. Ciò causava inefficienze e blocchi nel ciclo di vita dello sviluppo del software, ma ha anche portato all'affermazione di DevOps, ovvero l'insieme di filosofie organizzative, pratiche e strumenti in grado di abilitare i team piccoli e interfunzionali, noti anche come Squad, che sono responsabili della continuous delivery e della qualità degli aggiornamenti dei prodotti, end-to-end.
Inizialmente DevOps ha unificato solo le operazioni IT e di sviluppo, mentre i test continuavano a essere eseguiti da un team separato con metodi prevalentemente manuali. Ciò ha contribuito a risolvere le problematiche legate alla distribuzione e al monitoraggio delle applicazioni cloud e ha inoltre determinato la creazione di pipeline CI/CD completamente automatizzate. Tuttavia, non offriva cicli di rilascio molto più rapidi, poiché i test erano in silos e spesso eseguiti con un processo manuale che richiedeva molto tempo.
Per risolvere il collo di bottiglia dei test, le organizzazioni stanno ora stanno passando dai team di controllo di qualità centralizzati all'integrazione del controllo di qualità nell'intero team di sviluppo.
Che cos'è l'automazione dei test?
L'automazione dei test indica la pratica di esaminare e convalidare automaticamente un prodotto software, ad esempio un'applicazione Web, per assicurarsi che soddisfi gli standard di qualità predefiniti per lo stile del codice, la funzionalità (logica aziendale) e l'esperienza utente.
Le pratiche di test prevedono in genere le seguenti fasi:
- Test unitari: convalida le singole unità di codice, come una funzione, in modo che il funzionamento sia quello previsto.
- Test di integrazione: garantisce che diverse parti di codice possano interagire senza conseguenze involontarie.
- Test end-to-end: verifica che l'applicazione soddisfi le aspettative dell'utente.
- Test esplorativi: adotta un approccio non strutturato per esaminare numerose aree di un'applicazione dal punto di vista dell'utente, per far emergere problemi funzionali o visivi.
I diversi tipi di test sono spesso visualizzati come una piramide. Man mano che si sale lungo la piramide, il numero di test in ogni tipo diminuisce e il costo della creazione e dell'esecuzione dei test aumenta.
In passato, tutti i test all'interno della piramide venivano eseguiti manualmente. Si trattava di un processo lento, costoso e soggetto a errori, che è stato poi sostituito dalla creazione di strumenti di test automatizzati.
Oggi, quasi tutti i test unitari sono completamente automatizzati e questa scelta è considerata una best practice. Anche i test di integrazione sono ampiamente automatizzati e, qualora non lo siano, vengono generalmente ignorati a favore di test end-to-end più manuali. L'attuale ondata di iniziative di automazione dei test è in gran parte focalizzata sull'automazione del livello end-to-end della piramide di test, il che riduce la necessità di test di integrazione.
Anche se gli strumenti di automazione esistono da oltre un decennio, molti richiedono competenze di codifica e spesso determinano test inaffidabili che comportano costi estremamente elevati in termini di risoluzione dei problemi e gestione su larga scala. Molti team alla fine scelgono di creare i propri framework di automazione dei test personalizzati, il che rende difficile e dispendioso in termini di tempo l'onboarding di nuovi membri a causa della curva di apprendimento ripida. Anche i framework personalizzati richiedono manutenzione e miglioramenti specifici per stare al passo con i cambiamenti dello stack tecnologico. Di conseguenza, la maggior parte dei test end-to-end richiedeva, fino a ora, un processo manuale.
Man mano che le pratiche DevOps maturano nell'ambito delle organizzazioni, la necessità di automazione dei test durante l'intero ciclo di vita è importante per sfruttare i principali vantaggi di DevOps: la capacità di compilare, testare e rilasciare in modo più rapido e affidabile, semplificare le risposte agli imprevisti e migliorare la collaborazione e la comunicazione tra i team. Il fatto che una build di rilascio resti per diversi giorni presso il team di controllo di qualità prima che gli sviluppatori ricevano il feedback e correggano i problemi identificati non è più accettabile. I team di controllo di qualità devono allineare le proprie attività nel ciclo DevOps verificando che i casi di test siano automatizzati e raggiungano una copertura del codice di quasi il 100%. Gli ambienti devono essere standardizzati e la distribuzione nelle box di controllo di qualità deve essere automatizzata. I task di pre-test, le operazioni di pulizia, i task di post-test e così via devono essere automatizzati e allineati al ciclo di continuous integration.
Ora esistono strumenti low-code come mabl che consentono di incorporare test end-to-end affidabili e automatizzati in ogni fase della pipeline CI/CD, contribuendo a rilevare i problemi già nella fase iniziale del ciclo di vita dello sviluppo. È un dato di fatto che quanto prima si rilevano i problemi di un rilascio, tanto più veloce e conveniente è la loro correzione.
Test automatizzati in DevOps
In pratica, ciò significa che gli sviluppatori gravitano verso la scrittura di test unitari per verificare che il codice funzioni come previsto, mentre i professionisti della qualità e gli owner di prodotto creano test dell'interfaccia utente automatizzati che convalidano l'esperienza utente end-to-end. I professionisti della qualità organizzano anche sessioni di test esplorativi in cui il team esamina manualmente varie aree di applicazione alla ricerca di problemi.
Una best practice DevOps prevede l'esecuzione di test automatizzati il prima possibile e il più spesso possibile all'interno della pipeline CI/CD. Ciò include l'esecuzione di test dell'interfaccia utente automatizzati in produzione per monitorare in modo proattivo i problemi relativi all'esperienza utente. Poiché le applicazioni odierne si basano su numerosi servizi con più parti dinamiche, l'esecuzione di un monitoraggio sintetico delle transazioni attraverso l'esecuzione di test in produzione può rilevare i problemi con i servizi di terze parti prima che lo facciano gli utenti.
materiale correlato
Inizia gratis
materiale correlato
Migliora le pratiche DevOps con i test
Come iniziare a utilizzare i test automatizzati
Non esiste una soluzione valida per tutti, ma di seguito sono riportati alcuni aspetti importanti da considerare quando definisci una strategia di automazione dei test per il tuo team:
Frequenza di rilascio
Più frequenti sono i rilasci, più è necessario investire nell'automazione dei test, in particolare nei test end-to-end che dovrebbero essere eseguiti per ogni distribuzione. Se non disponi di un ciclo di rilascio frequente e desideri accelerarlo, puoi iniziare aggiungendo più test unitari e creando semplici smoke test dell'interfaccia utente automatizzati per eseguire un controllo rapido dell'integrità su ogni build. Quindi, puoi investire gradualmente nella creazione di test end-to-end più automatizzati che riducono il tempo necessario per eseguire il controllo di un rilascio per le regressioni.
Disponibilità degli strumenti
I moderni strumenti di automazione dei test migliorano in misura notevole la capacità del tuo team di fornire continuamente software di alta qualità. Quando si valutano gli strumenti di test, considera aspetti come la semplicità della creazione dei test, l’affidabilità, la necessità di manutenzione e l’integrazione con lo stack CI/CD.
È altrettanto importante comprendere la curva di apprendimento e le competenze richieste per un determinato strumento. Quanto più facile è l'utilizzo della soluzione, tanto più veloce saranno i progressi compiuti dal team. Inoltre, la soluzione sarà più accessibile a un maggior numero di persone del team, il che può determinare una maggiore copertura dei test e promuovere una cultura della qualità. Un modo efficace per valutare le soluzioni di test è far sì che l'intero team automatizzi alcuni scenari di test case utilizzando i principali candidati nell'elenco delle possibili soluzioni.
Maturità del prodotto
Se il tuo team lavora su un prodotto con numerosi clienti esistenti e con una base di codice matura, è probabile che tu disponga già di una frequenza di rilascio e di pratiche di test stabilite. Man mano che il team passa alla continuous integration o alla CI/CD completa, è importante includere l'automazione dei test come parte fondamentale dell'automazione della pipeline. La consegna rapida e il feedback rapido non sono sostenibili senza automatizzare i test prima e durante lo sviluppo.
D'altra parte, se il team sta creando un nuovo prodotto, è questo il momento ideale per instrumentare test automatizzati sin dall'inizio. Stabilisci già dal primo momento un obiettivo per la copertura dei test unitari e concentrati sulla definizione dei test case end-to-end per ciascuna funzionalità. È preferibile attendere che una funzionalità sia prossima al rilascio prima di aggiungere test end-to-end automatizzati in modo da evitare errori di test dovuti a modifiche dell'interfaccia utente che causano interruzioni.
Ambienti CI/CD e dati di test
La creazione di test automatizzati è di per sé una sfida, ma spesso è la mancanza di ambienti appena creati con dati di test che impedisce ai team di adottare l'automazione dei test nella fase iniziale della pipeline CI/CD. Pertanto, è importante che il team discuta sin dall'inizio della strategia di test e si impegni a creare l'infrastruttura di test necessaria. Ad esempio, gli sviluppatori devono implementare il supporto per gli account utente di test e avere la possibilità di caricare un ambiente con dati di test tramite un'API. La creazione tempestiva dell'infrastruttura per il provisioning di ambienti di test effimeri accelererà notevolmente il ciclo di revisione e feedback del rilascio.
In che modo i test automatici cambiano il ruolo del controllo di qualità?
In che modo i test automatizzati potenziano DevOps
I test automatizzati ora sono considerati una best practice DevOps. L'implementazione di test automatizzati su una buona parte della pipeline di sviluppo può incutere qualche timore in un primo momento, ma è possibile iniziare automatizzando un singolo scenario end-to-end ed eseguendo il test in base a una pianificazione. Inoltre, grazie ai nuovi strumenti i test automatizzati sono più facili che mai e i risultati compensano ampiamente lo sforzo. Dopotutto, a chi non piace avere utenti soddisfatti?
L'adozione di test automatizzati offre i seguenti vantaggi DevOps:
- Velocity senza sacrificare la qualità: ottieni un'elevata velocity del prodotto, che soddisfa le esigenze degli sviluppatori e consente loro di offrire più valore agli utenti, più velocemente.
- Migliore collaborazione tra i team: la responsabilità condivisa per la qualità migliora la collaborazione tra i membri del team.
- Affidabilità: migliora l'affidabilità dei rilasci aumentando la copertura con l'automazione dei test. Durante la produzione, i problemi dovrebbero verificarsi raramente, non essere la norma.
- Scalabilità: produci risultati di qualità coerenti con rischi ridotti distribuendo lo sviluppo tra più team di piccole dimensioni che operano in modo autosufficiente.
- Sicurezza: procedi rapidamente senza compromettere la sicurezza e la conformità sfruttando policy di conformità automatizzate, controlli granulari e tecniche di gestione della configurazione.
- Maggiore soddisfazione dei clienti: la maggiore affidabilità e le risposte rapide al feedback degli utenti aumentano la soddisfazione degli utenti e determinano un maggior numero di segnalazioni di prodotti.
In conclusione...
In ultima analisi, l'adozione dell'automazione dei test per liberare tutto il potenziale di DevOps riduce i colli di bottiglia e aumenta l'efficienza; entrambi i risultati avranno un impatto diretto sulla soddisfazione dei dipendenti e dei clienti e, in definitiva, sui profitti.
Inizia ad automatizzare i test con Bitbucket Pipelines o con uno dei numerosi strumenti e risorse di automazione dei test disponibili nell'Atlassian Marketplace.
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.