Nella mia azienda, lavoriamo con successo con pratiche agili, ma senza usare iterazioni. Il motivo principale è che non riusciamo a trovare un modo pulito per adattarci al QA in un ciclo di iterazione.
Comprendiamo il QA come ulteriore bit di verifica per un determinato build (release candidate) prima che questo build venga distribuito al cliente. Il punto è evitare che un singolo commit dannoso danneggi l'intera versione. Dal momento che non si sa mai quale sia, il QA deve attendere fino a quando tutte le funzionalità / commit per il rilascio sono nella build. (Non sono permesse le ultime parole famose "È stato solo un piccolo cambiamento".)
Se il QA trova dei bug in un candidato di rilascio, gli sviluppatori risolvono questi bug nel rispettivo ramo di rilascio (e lo uniscono nel trunk). Quando tutti i bug sono stati corretti, viene distribuito un nuovo build per il QA da testare nuovamente. Solo quando non viene trovato alcun bug in un determinato candidato al rilascio, viene offerto al cliente per la verifica.
Questo di solito richiede circa due o tre candidati, circa una settimana, per rilascio. Il tempo per scrivere le correzioni è in genere molto più basso rispetto agli sforzi di test. Quindi, per tenere occupati gli sviluppatori, lavorano sulla versione N + 1 mentre il QA funziona su N.
Senza usare le iterazioni, questo non è un problema perché possiamo sovrapporre il lavoro per le versioni N e N + 1. Tuttavia, da quello che ho capito, questo non è compatibile con approcci basati su iterazioni come Scrum o XP. Richiedono che un'iterazione sia rilasciabile alla fine con tutti gli sforzi di test da incorporare nell'iterazione.
Trovo che ciò porti necessariamente a uno dei seguenti risultati indesiderati:
(A) Gli sviluppatori sono inattivi al termine di un'iterazione perché il QA ha bisogno di tempo per verificare un candidato al rilascio e il lavoro di correzione dei bug non tiene completamente occupati gli sviluppatori.
(B) Il QA inizia a funzionare già prima che la prima release candidate sia pronta. Questo è ciò che è principalmente raccomandato su Stack Exchange. Ma non è ciò che la mia azienda comprende come QA perché non esiste un candidato di rilascio specifico testato. E il "piccolo cambiamento" che rompe tutto può ancora essere introdotto inosservato.
(C) I bug vengono riportati alla successiva iterazione. Questo è consigliato anche su Stack Exchange. Non penso che sia una soluzione. Significa fondamentalmente che non otteniamo mai una build verificata perché ogni volta che vengono apportate correzioni di bug, vengono aggiunti allo stesso ramo anche nuovi commit non verificati.
Esiste una via d'uscita da questo dilemma?