Gute Frage. Ich glaube nicht, dass es eine "offizielle" richtige Antwort darauf gibt. Es hängt davon ab, wie schnell Sie testen können.
Das wesentliche Problem besteht darin, dass bei jeder Zusammenführung, Kompilierung oder Bereitstellung möglicherweise ein Fehler auftritt. Je weiter oben die Kette ist, die Sie testen, desto eher wissen Sie über Fehler Bescheid, aber desto öfter müssen Sie erneut testen.
Um sicherzugehen, dass Sie die von den Kunden verwendete Software getestet haben, müssen Sie die Live-Bereitstellung wirklich testen, bevor der Datenverkehr des Kunden (unter der Annahme einer Web-App) über ein blau / grünes Bereitstellungsmuster zu diesen Servern geleitet wird.
Aber offensichtlich ist es etwas spät am Tag, als Sie den Code zum ersten Mal überhaupt überprüft haben!
Wenn Sie einen Release-Zweig in einer Qa-Umgebung testen, können Sie das Risiko eingehen und die Live-Tests nur auf Rauchtests reduzieren. und wende Bugfixes auf den Release-Zweig an. Sie können jedoch nicht beurteilen, ob ein Feature vollständig ist, bevor Sie ein Release erstellen
Wenn Sie die Entwicklung testen, erhalten Sie Zweige mit Mini-Bugfix-Funktionen. Features werden noch zusammengeführt, bevor sie bewertet werden. Außerdem können Features für die nächste Version mit dem Testen der aktuellen Version kollidieren.
Wenn Sie Feature-Zweige testen, benötigen Sie eine Million Umgebungen und müssen die Reihenfolge der Zusammenführungen und Testabmeldungen orchestrieren. plus viel erneutes Testen.
Aus meiner Erfahrung würde ich empfehlen:
Schnelltest des Feature-Zweigs auf dem Dev-Rechner. Stellen Sie einfach sicher, dass die Funktion vollständig ist, und die Tester / Entwickler sind sich einig, was die Anforderungen bedeuten.
Tägliche Tests / automatisierte Tests für den auf QA-Servern implementierten Dev Branch. Hiermit können Sie alle Funktionen zusammen testen und mitteilen, wann Sie zur Veröffentlichung bereit sind.
Wenn alle Funktionen vorhanden sind, der Test jedoch noch nicht abgeschlossen ist. zB der Sprint ist beendet. Erstellen Sie einen Release-Zweig und stellen Sie ihn in einer zweiten qa-Umgebung bereit. Auf diese Weise können Fehlerbehebungen / Tests in Version 1 gleichzeitig mit den Funktionen in Version 2 fortgesetzt werden.
(Scrum Devotees werden sagen, du solltest nur Fehlerbehebungen in Sprint 2 vornehmen, aber lass uns praktisch sein)
Rauchtests vor dem Umschalten auf Live-Grün / Blau-Einsatz. Diese sind sehr wichtig, da Sie Konfigurations- / Umgebungsfehler feststellen werden, nach denen während der Entwicklung niemand wirklich sucht.