L'integrazione continua è una best practice di per sé, il cui obiettivo principale è quello di assicurare che il tuo codice venga assemblato correttamente e superare i test di unità e integrazione.
CI dovrebbe succedere continuamente indipendentemente dalle modifiche (non sporadicamente solo quando si verificano cambiamenti). Questo è particolarmente importante per i progetti coinvolti nella distribuzione e nella consegna continua.
I test possono fallire in qualsiasi momento durante il processo CI. Diciamo che i contratti di terze parti API potrebbero essere stati modificati o potrebbero aver smesso di funzionare. O peggio ancora, qualcuno potrebbe aver cambiato l'RDM. Queste cose accadono più spesso di quanto pensiamo. Applicando continuamente il nostro codice per superare i test, ci aspettiamo dei problemi imprevisti prima delle versioni o delle distribuzioni.
Per quanto riguarda il tuo ruolo di tester, Q & Gli sviluppatori sono focalizzati sulla convalida delle funzionalità end-to-end e dell'esperienza degli utenti piuttosto che sul codice. Contribuiscono allo SDLC con test end-to-end manuali o automatizzati, in modo che se gli sviluppatori cambiano, rimuovano o aggiungano nuove funzionalità al progetto, ciò viene comunque realizzato con il suo scopo principale nelle premesse concordate. Test di accettazione .
Q & Gli sviluppatori sono in qualche modo un cliente molto esigente. Meno sono familiari con il codice, meglio è perché i test non saranno influenzati dai dettagli di implementazione.
I test automatizzati sono integrati nella pipeline di implementazione, contribuendo a CI e CD.
Dal punto di vista DevOps, non c'è un ruolo A o B, c'è una squadra in cui tutti fanno test, sviluppano, si occupano della qualità e dell'integrità del progetto.
Test di accettazione
Seguendo i tuoi commenti relativi a come automatizzare i test di accettazione, alla mia ultima esperienza abbiamo 3 possibili approcci
1. Test manuali
Bene, fai solo test manuali. Eseguiamo questi test in piccoli progetti. Per noi, piccolo significa 1-5 schermi. Qui, la documentazione è tua amica. Ottieni documentato il caso d'uso da eseguire e il risultato atteso. Esegui il caso d'uso nell'ordine corretto e controlla il risultato.
2. Automatizza il test: orientato agli eventi della macchina
In poche parole. Selenio. L'idea dietro Selenium è quella di imitare il browser. Ne più ne meno. Dieci anni fa era relativamente fattibile perché i browser web non erano così sofisticati come lo sono oggi. Né erano le applicazioni web. Le applicazioni web di oggi sono molto più complesse, sono piuttosto basate su eventi, più dinamiche e il rendering non è più sequenziale. Il selenio non si adatta bene in tali condizioni. Le metodologie agili non aiutano qui perché i cambiamenti avvengono più spesso e alcuni di essi potrebbero portarci a ridigitare l'intero automatismo.
3. Automatizza il test, orientato all'azione umana
Recentemente abbiamo iniziato a giocare con Computer vision e abbiamo ottenuto ottimi risultati. Non è esente da carenze ed è molto più complesso farlo funzionare. Ad esempio, dobbiamo raggiungere pixel perfetti per ogni possibile risoluzione, per ogni possibile S.O, per qualsiasi dispositivo possibile. Dobbiamo inoltre implementare un X-server per eseguire il rendering del browser Web su un server remoto quando questi test vengono eseguiti da Jenkins.
Questo articolo potrebbe interessare tu. Abbiamo implementato Skulli come motore di visione artificiale. I nostri test vengono eseguiti contro le applicazioni implementate che vengono monitorate durante l'intera fase di test da Jacoco, quindi possiamo determinare il grado di copertura del caso d'uso.