Nella mia azienda lavoriamo con successo con pratiche agili, ma senza utilizzare iterazioni. La ragione principale è che non possiamo trovare un modo pulito per adattarsi al QA in un ciclo di iterazione.
Comprendiamo il QA come un ulteriore elemento di verifica per una build build (release candidate) prima che questa build venga distribuita al cliente. Il punto è evitare che un singolo commit dannoso danneggi l'intera release. Dal momento che non si sa mai quale sia, QA deve attendere che le tutte funzioni / commit per il rilascio siano nel build. (Nessuna famosa ultima parola "È stato solo un piccolo cambiamento" consentito.)
Se il QA trova bug in una release candidate, gli sviluppatori correggono questi bug nel rispettivo ramo di rilascio (e li uniscono nel trunk). Quando tutti i bug sono corretti, viene distribuita una nuova build per il QA da ri-testare. Solo quando non vengono rilevati bug in un determinato release candidate, viene offerto al cliente per la verifica.
Questo di solito richiede circa due o tre candidati, circa una settimana, per versione. Il tempo per scrivere le correzioni è in genere molto inferiore rispetto agli sforzi di test. Quindi, per mantenere gli sviluppatori occupati, lavorano sulla versione N + 1 mentre il QA funziona su N.
Senza utilizzare le iterazioni, questo non è un problema perché possiamo sovrapporre il lavoro alle versioni N e N + 1. Tuttavia, da quello che ho capito, questo non è compatibile con approcci basati su iterazioni come Scrum o XP. Richiedono un'iterazione per essere 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 a una fine di iterazione perché il QA ha bisogno di tempo per verificare un candidato alla release e il lavoro di correzione dei bug non tiene pienamente occupati gli sviluppatori.
Il (B) QA inizia a funzionare già prima che il primo candidato sia pronto. Questo è ciò che è maggiormente raccomandato su Stack Exchange. Ma non è ciò che la mia azienda comprende come QA perché non è stato testato alcun candidato specifico. E il "piccolo cambiamento" che rompe tutto può ancora essere introdotto inosservato.
(C) Gli errori vengono trasferiti alla successiva iterazione. Questo è anche raccomandato su Stack Exchange. Non penso che sia una soluzione. In pratica significa che non stiamo mai ottenendo una build verificata perché ogni volta che vengono apportate correzioni di errori, vengono aggiunti allo stesso ramo anche nuovi commit non verificati.
Esiste un modo per uscire da questo dilemma?