Formazione scritta DevOps
Perché serve l'automazione dei test nell'organizzazione DevOps?
Se il reparto che rilascia il software non ha ancora un'automazione dei test adeguata, c'è una netta separazione tra sviluppo e test. Gli sviluppatori ricevono feedback tardivi sulla qualità del lavoro mentre sono già impegnati in altre attività. Spesso sfugge loro il rapporto di causa ed effetto tra il codice scritto (o omesso) e i difetti. Tornare con la mente a quando hanno introdotto i difetti richiede un cambio di contesto che riduce la produttività. Con un feedback tardivo, il legame tra sistemi e difetti è complesso e poco chiaro, quindi è irrealistico aspettarsi correzioni di qualità senza soluzioni di ripiego.
Senza automazione dei test, l'organizzazione DevOps impiegherebbe più tempo e denaro per rilasciare prodotti e servizi di qualità. Nel XXI secolo questo non è più un modello scalabile per un'organizzazione tecnologica, in qualunque settore operi.
Puoi automatizzare i test,
ma creare qualità richiede il lavoro del team
Il team DevOps dovrebbe automatizzare il maggior numero possibile di casi di test. Puoi automatizzare i test, ma non le capacità di ragionamento con cui il team crea qualità. Evita quindi di sprecare il tempo delle persone per attività ripetitive e ripetibili che il software può svolgere al loro posto.
Principi DevOps per una buona automazione dei test
- L'automazione dei test deve fornire un riscontro tempestivo e precoce sulla qualità del lavoro.
- A parità di condizioni nelle diverse esecuzioni, i test devono produrre risultati coerenti, deterministici e ripetibili.
- I test non dovrebbero generare falsi positivi.
- Pochi casi di test automatizzati e affidabili sono preferibili a molti test non automatizzati e inaffidabili, che possono dare risultati incoerenti anche a parità di condizioni.
- L'automazione dovrebbe concentrarsi per prima cosa sulla convalida delle funzionalità e dei vantaggi principali che i sistemi offrono ai clienti interni ed esterni. Anche solo questo livello di automazione è molto meglio di nessuna automazione.
- In seguito, automatizza il maggior numero possibile di casi di test per valorizzare al meglio il tempo delle persone nei team DevOps.
- Nell'automazione dei test, evita riscontri lenti e periodici. Serve un riscontro rapido ogni volta che tu o uno sviluppatore tentate di integrare codice nel trunk.
- Se i test automatizzati non sono abbastanza veloci, cerca modi per accelerare i test e/o il software. È fondamentale per avere una piattaforma di rilascio continuo e una pipeline di deployment affidabili e offrire un servizio di qualità ai clienti. Per aumentare ancora la velocità, esegui i test automatizzati in parallelo.
- Valuta lo sviluppo guidato dai test (TDD). Scrivi prima i test automatizzati, poi realizza il software.
L'automazione dei test è essenziale per il rilascio continuo e la pipeline di deployment
Come abbiamo visto, DevOps permette agli sviluppatori di distribuire il proprio codice nei sistemi di produzione. Osservando i primi team DevOps nelle organizzazioni si è però visto che, pur registrando rapidamente il codice nel trunk e chiudendo attività e ticket, gli sviluppatori esitavano a premere il pulsante per rilasciarlo in produzione. Temevano di compromettere la produzione e di esserne ritenuti responsabili.
Gli sviluppatori sono riusciti a superare questa paura solo quando i team DevOps hanno ottenuto una copertura dei test ampia e affidabile grazie all'automazione.
Per esempio, in Google, quando uno sviluppatore registra codice nel trunk, dopo controlli iniziali come l'analisi statica del codice, l'analisi delle duplicazioni e della copertura, il codice viene verificato con quasi un milione di casi di test automatizzati. Se tutti i controlli e i test riescono, la build viene generata dal trunk, messa in produzione e replicata sugli altri server di produzione. È più o meno così che 5.000 piccoli team indipendenti di Google rimangono produttivi ed eseguono decine di migliaia di deployment in produzione ogni giorno. Senza automazione dei test non sarebbe possibile.
Un feedback rapido e affidabile è l'unico modo per avere una pipeline di deployment sicura e proteggerne l'integrità. Quando la pipeline si blocca perché alcuni casi di test automatizzati falliscono, il team DevOps corregge codice e configurazione errati prima di integrare altro lavoro nel trunk. Inoltre, ogni volta che rilevi nella pipeline un errore che si sarebbe potuto individuare e prevenire con un caso di test automatizzato, crei quel caso di test e lo aggiungi al repository dei test automatizzati.
Tipi di test che puoi automatizzare
- Test unitari: Convalidano singole funzioni, classi o moduli delle applicazioni.
- Test di accettazione: Convalidano le funzionalità e i vantaggi che le applicazioni offrono ai clienti.
- Test di integrazione (dei servizi): Convalidano l'interazione tra le applicazioni e i flussi completi dei servizi.
- Test di prestazioni e stress: Convalidano la capacità dei servizi di scalare, o meno, con carichi previsti e imprevisti dei client. Sono particolarmente importanti per i servizi più usati.
- Test non funzionali: Servono a convalidare sicurezza, disponibilità, capacità e scalabilità.
Se tu e il team faticate ad automatizzare i test unitari e di accettazione e dipendete molto dai test di integrazione automatizzati, probabilmente l'architettura è strettamente accoppiata. Cerca modi per disaccoppiarne gli elementi.
CONCLUSIONE
In questo capitolo abbiamo illustrato l'importanza dell'automazione dei test in DevOps. Automatizzare i test è fondamentale per rilasciare software in modo sicuro e rapido.
Che l'organizzazione adotti DevOps o meno, senza test automatizzati è impossibile avere un'organizzazione IT di livello internazionale, produttiva, redditizia e in grado di servire bene i clienti interni ed esterni.
