Ich bin ein Softwareentwickler in einem ziemlich großen agilen Team (wir haben acht Entwickler, die aktiv Änderungen an einem einzelnen Code-Repository vornehmen). Alle zwei Wochen bringen wir eine neue Version unserer Software in die Produktion. Hier ist unser aktueller Workflow:
- Beim Starten einer neuen Aufgabe erstellen Entwickler einen "Feature-Zweig" aus dem Hauptentwicklungszweig (wir verwenden git ) und arbeiten diesen neuen Zweig ab
- Sobald ein Entwickler die Arbeit an seiner Aufgabe beendet hat, führt er seinen Feature-Zweig wieder in den Entwicklungszweig ein
- Der Entwickler führt den Entwicklungszweig in den QS-Zweig ein.
- Ein Build wird aus dem QA-Zweig ausgelöst. Die Ausgabe dieses Builds wird in unserer QS-Umgebung bereitgestellt, damit die Tester mit dem Testen beginnen können.
Es ist durchaus üblich, dass unsere Tester Probleme mit diesen neuen Funktionen finden, die in den QS-Zweig integriert wurden. Dies bedeutet, dass die QS-Umgebung zu einem bestimmten Zeitpunkt wahrscheinlich mehrere neue Funktionen enthält - einige getestet und fehlerfrei, andere defekt. Dies erschwert die Freigabe, da sich der QS-Build selten in einem produktionsbereiten Zustand befindet.
Um dies zu mildern, haben wir versucht, ein "QA-Freeze" einzuleiten, was bedeutet, dass Entwickler unseren Entwicklungszweig einige Tage vor der Veröffentlichung nicht mit dem QA-Zweig zusammenführen. Fehlerbehebungen an der QA-Umgebung werden direkt im QA-Zweig vorgenommen und bis zum Entwicklungszweig zusammengeführt. Theoretisch hält dies neue, defekte Funktionen von der Qualitätssicherung fern und ermöglicht es uns dennoch, Probleme zu beheben, die bereits in der Qualitätssicherung vorhanden sind.
Obwohl dieses "QA Freeze" -Konzept teilweise erfolgreich war, ist es schwer zu koordinieren und die Leute sind oft verwirrt darüber, ob sie zur QA fusionieren dürfen. Es war auch schwierig, eine Frist für das "Einfrieren der Qualitätssicherung" festzulegen - jeder mag die Idee, zwischen dem Einfrieren und der Veröffentlichung eine Atempause einzulegen, aber in der Praxis möchten sie ihre Funktion lieber in der nächsten Veröffentlichung haben, als die Frist einzuhalten.
Gibt es eine bessere Möglichkeit, um sicherzustellen, dass wir alle zwei Wochen einen sauberen Build für unsere Releases haben?