いい質問ですね。これに対して「公式」の正解があるとは思わない。テストの速度に依存します。
本質的な問題は、各マージ、コンパイル、またはデプロイメントでさえ、潜在的にバグを作成できることです。テストするチェーンをさらに「上」にすればするほど、バグについてより早く知ることができますが、再テストする必要がある回数も増えます。
顧客が使用しているソフトウェアをテストしたことを保証するためには、顧客のトラフィック(Webアプリを想定)が青/緑の展開パターンを介してそれらのサーバーにルーティングされる前に、実際に展開をテストする必要があります。
しかし、これは明らかにコードをチェックしたのが初めてであるため、少し遅れています!
qa envでリリースブランチをテストする場合、リスクを負い、ライブテストをスモークテストのみに減らすことができます。リリースブランチにバグ修正を適用します。しかし、リリースを作成する前に機能が完全かどうかを評価することはできません
開発をテストすると、小さなバグ修正機能のブランチが得られます。機能はまだ評価される前にマージされ、さらに次のリリースの機能は現在のリリースのテストと衝突する可能性があります。
Featureブランチをテストする場合、100万の環境が必要であり、マージの順序を調整し、サインオフをテストする必要があります。さらに多くの再テスト。
私の経験から私はお勧めします:
開発マシンの機能ブランチのクイックテスト。その機能が完全であることを確認し、テスター/開発者が要件の意味について同意します。
qaサーバーにデプロイされたdevブランチでの毎日のテスト/自動テスト。すべての機能を一緒にテストし、リリースの準備ができたときに発言できます。
すべての機能はあるが、テストが終了していない場合。たとえば、スプリントが完了しました。リリースブランチを作成し、2番目のqa環境にデプロイします。これにより、リリース2の機能と同時にリリース1でのバグ修正/テストを継続できます。
(スクラム愛好者は、バグ修正のみをスプリント2に入れるべきだと言いますが、実用的です)
スイッチオーバーの前に、ライブのグリーン/ブルー展開の煙テスト。これらは、開発中に誰も実際に探していない設定/環境エラーを拾うため、非常に重要です。