In meinem Unternehmen arbeiten wir erfolgreich mit agilen Methoden - aber ohne Iterationen. Der Hauptgrund ist, dass wir keinen sauberen Weg finden können, um in einem Iterationszyklus in die Qualitätssicherung zu passen.
Wir verstehen QA als zusätzliche Überprüfung eines bestimmten Builds (Release Candidate), bevor dieser Build für den Kunden bereitgestellt wird. Es soll vermieden werden, dass ein einziges böswilliges Commit die gesamte Version beschädigt. Da Sie nie wissen, um welche es sich handelt, muss die Qualitätssicherung warten, bis sich alle Funktionen / Commits für die Veröffentlichung im Build befinden. (Keine berühmten letzten Worte "Es war nur eine winzige Veränderung" erlaubt.)
Wenn QA Fehler in einem Release-Kandidaten findet, beheben Entwickler diese Fehler im jeweiligen Release-Zweig (und führen sie in Trunk zusammen). Wenn alle Fehler behoben sind, wird ein neues Build bereitgestellt, damit QA erneut testen kann. Nur wenn in einem bestimmten Release Candidate keine Bugs gefunden werden, wird es dem Kunden zur Überprüfung angeboten.
Dies dauert normalerweise ungefähr zwei bis drei Kandidaten, ungefähr eine Woche pro Veröffentlichung. Die Zeit zum Schreiben der Korrekturen ist in der Regel viel kürzer als der Testaufwand. Um die Entwickler auf Trab zu halten, arbeiten sie an Release N + 1, während QA an N arbeitet.
Ohne die Verwendung von Iterationen ist dies kein Problem, da wir die Arbeit für die Releases N und N + 1 überlappen können. Soweit ich weiß, ist dies jedoch nicht mit iterationsbasierten Ansätzen wie Scrum oder XP kompatibel. Sie fordern, dass eine Iteration am Ende freigegeben werden kann, wobei der gesamte Testaufwand in die Iteration einfließen muss.
Ich stelle fest, dass dies zwangsläufig zu einem der folgenden unerwünschten Ergebnisse führt:
(A) Entwickler sind am Ende einer Iteration untätig, da die Qualitätssicherung Zeit benötigt, um einen Release-Kandidaten zu verifizieren, und die Arbeit zur Fehlerbehebung die Entwickler nicht vollständig beschäftigt.
(B) Die Qualitätssicherung beginnt bereits, bevor der erste Release Candidate fertig ist. Dies wird am häufigsten für Stack Exchange empfohlen. Aber es ist nicht das, was mein Unternehmen unter Qualitätssicherung versteht, da es keinen bestimmten getesteten Release-Kandidaten gibt. Und die "winzige Veränderung", die alles kaputt macht, kann immer noch unbemerkt eingeführt werden.
(C) Fehler werden auf die nächste Iteration übertragen. Dies wird auch für Stack Exchange empfohlen. Ich denke nicht, dass es überhaupt eine Lösung ist. Dies bedeutet im Grunde, dass wir nie einen verifizierten Build erhalten, da bei jeder Fehlerbehebung neue, nicht verifizierte Commits zum selben Zweig hinzugefügt werden.
Gibt es einen Ausweg aus diesem Dilemma?