Test in DevOps World

DevOps è una fusione delle pratiche di sviluppo e operazioni per lo sviluppo e la consegna del software.

I tester coinvolti nel modello di consegna DevOps iniziano a porre domande come:

  • Dove si inserisce il test in un modello DevOps?
  • In che modo il test e il QA in DevOps sono diversi dai test nei modelli Agile e a cascata?
  • In qualità di QA, quali competenze aggiuntive dovrei conoscere?

Questo post discute gli strumenti, le strategie e le pratiche che dobbiamo implementare per eseguire test in modo efficace in un mondo DevOps, abbracciando l'automazione e il test continuo in DevOps.




QA e test in DevOps

In che modo i test si sono evoluti da cascata ad agile a DevOps?

Modello a cascata

Le pratiche di test e controllo della qualità hanno visto un cambiamento considerevole rispetto ai giorni della cascata, Agile e ora DevOps. Nel modello a cascata, il test è stato visto come una fase del ciclo di vita dello sviluppo del software. I tester e lo sforzo di test erano molto isolati dove i tester facevano parte di un team di test e spesso erano separati dal team di sviluppo.


I tester possedevano il strategia di test ed erano visti come i guardiani della qualità. I test erano in gran parte manuali e avvenivano dopo che il software era stato completamente sviluppato e subito prima del rilascio in produzione.

Allo stesso modo, la consegna del software richiedeva molto tempo. Un team operativo separato era responsabile del rilascio del software in produzione che, nella migliore delle ipotesi, avveniva ogni pochi mesi. Il livello di comunicazione / collaborazione tra il team operativo e il team di sviluppo non era o è stato scarso o inesistente.

Modello agile

Il modello Agile ha creato un cambiamento nello spazio di sviluppo e test, nonché nella frequenza di rilascio. Il software è stato sviluppato in modo iterativo e incrementale. Scrum, che è una metodologia nel modello di consegna Agile, è diventato rapidamente molto popolare.

Lo sforzo di sviluppo è stato suddiviso in una serie di brevi iterazioni, tipicamente della durata di 2-4 settimane. Ogni iterazione creerebbe un software potenzialmente spedibile aggiungendo nuove o migliorando le funzionalità esistenti.


I tester sono diventati parte del team di sviluppo e il test è diventato un'attività parallela allo sviluppo del software, piuttosto che una fase alla fine dell'SDLC. L'attività di test è diventata una responsabilità condivisa e la qualità è stata di proprietà del team di sviluppo.

Il modello Agile ha fuso le pratiche di sviluppo e test e ha aperto la strada a una consegna più rapida del software, tuttavia, la distribuzione effettiva alla produzione è stata ancora eseguita da un team TechOps separato.

Sebbene il team di TechOps conoscesse i server, le reti e la distribuzione, normalmente erano ignari dei dettagli di ogni versione. Il feedback al team di sviluppo è stato lento. Se nella versione fosse presente un bug, normalmente occorrono alcune ore prima che il team di sviluppo venga a conoscenza del problema.

Modello DevOps

DevOps fa un ulteriore passo avanti nel modello Agile avvicinando le attività di rilascio e distribuzione a quelle di sviluppo e test. Ciò significa che un team agile da solo è responsabile dello sviluppo, del test e del rilascio del software che crea.




Strategia di test DevOps

I test in DevOps coprono l'intero ciclo di sviluppo e consegna del software. I tester non si concentrano più solo sui test funzionali e sulla verifica delle funzionalità.

In qualità di tester, dovremmo anche essere coinvolti nei test delle operazioni, nei test delle prestazioni, nei test di sicurezza di base, oltre a essere in grado di monitorare e analizzare i dati ei registri di produzione.

Dan Ashby ha un file ottimo post sui test in DevOps in cui descrive

Puoi capire perché le persone faticano a capire dove si inserisce il test in un modello che non lo menziona affatto. Per me, il test si adatta a ogni singolo punto di questo modello.


In effetti, i test possono e devono avvenire in ogni fase di un modello DevOps. Nel Post di Agile Test Strategy , abbiamo descritto come i test si inseriscono nel modello Agile.

La strategia di test DevOps può estenderlo aggiungendo le seguenti sezioni:

Automazione dei test e test continui in DevOps

La scelta di strumenti e tecnologie diventa sempre più importante nel modello DevOps. La scelta degli strumenti consente a un'organizzazione di fornire applicazioni e servizi ad alta velocità.


C'è una maggiore enfasi sui test automatizzati in DevOps poiché vogliamo creare una cultura in cui possiamo spingere il codice verso il basso nei sistemi rapidamente e con sicurezza.

Oltre ai test funzionali automatizzati, dovremmo anche avere una serie di test delle prestazioni e test di sicurezza / resilienza nella pipeline di consegna.

Inutile dire che, prima di essere in grado di implementare uno qualsiasi dei test automatizzati di cui sopra, innanzitutto sta costruendo una pipeline di build e consegna automatizzata in uno strumento di integrazione continua, come Jenkins.

Test in produzione

Testare in produzione non significa necessariamente eseguire gli script di test funzionali / delle prestazioni su un sistema live in cui gli utenti utilizzano l'applicazione.

Possiamo iniziare analizzando le tendenze nei test A / B o multivariant. Possiamo anche monitorare i server per qualsiasi comportamento strano, come perdite di memoria, elevato utilizzo della CPU, ecc.



Impatto di DevOps sui test

In che modo tutto questo ha cambiato il ruolo dei tester e dei test in DevOps?

I tester dovrebbero ora avere almeno le seguenti conoscenze e abilità per essere in grado di svolgere efficacemente le attività di test

  • Conoscenza di base del networking
  • Scripting Unix / Shell di base, ad es. bash, pitone
  • Integrazione continua / Consegna continua ad es. Jenkins,
  • Strumenti di test delle prestazioni come JMeter o Gatling
  • Pronto per operazioni e test di resilienza
  • Conoscenza di container, Docker, Kubernetes
  • Interrogare strumenti di monitoraggio come Splunk
  • Servizi cloud, ad es. AWS, Azure