私たちの開発チームはGitFlow分岐戦略を使用してきました。
最近、ソフトウェアの品質を向上させるために、テスターを数名採用しました。アイデアは、すべての機能がテスターによってテスト/ QAされるべきであるということです。
以前は、開発者は別々の機能ブランチで機能に取り組みdevelop、完了したらそれらをブランチにマージします。開発者は自分の作業をそのfeatureブランチで自分でテストします。今、テスターと一緒に、私たちはこの質問をし始めます
テスターはどのブランチで新機能をテストする必要がありますか?
明らかに、2つのオプションがあります。
- 個々の機能ブランチ
- 上の
develop枝
開発ブランチでのテスト
最初は、これが確実な方法であると信じていました。
- この機能は、
develop開発が始まってからブランチにマージされた他のすべての機能でテストされます。 - 競合は早期に検出できます
- これにより、テスターの作業が簡単になり、
develop常に1つのブランチ()のみを処理します。彼は開発者に、どのブランチがどの機能に対応するかを尋ねる必要はありません(機能ブランチは、関連する開発者が独占的に自由に管理する個人のブランチです)
これに関する最大の問題は次のとおりです。
developブランチはバグで汚染されています。テスターはバグまたは競合を発見すると、開発者に報告し、開発ブランチで問題を修正します(機能ブランチはマージされると中止されました)。その後、さらに修正が必要になる場合があります。複数のサブシーケンスのコミットまたはマージ(
developバグを修正するためにブランチからブランチが再作成される場合)はdevelop、可能であればブランチからの機能のロールバックを非常に困難にします。developブランチにマージされ、ブランチで修正される複数の機能があります。これは、developブランチの一部の機能のみを含むリリースを作成するときに大きな問題を引き起こします
機能ブランチでのテスト
そこで、もう一度考えて、機能ブランチで機能をテストする必要があると判断しました。テストする前に、developブランチからの変更を機能ブランチにマージします(ブランチに追いつきますdevelop)。これはいい:
- あなたはまだ主流の他の機能で機能をテストします
- さらなる開発(バグの修正、競合の解決など)によって
developブランチが汚染されることはありません。 - 完全にテストおよび承認されるまで、機能をリリースしないことを簡単に決定できます。
ただし、いくつかの欠点があります
- テスターはコードのマージを行う必要があり、競合がある場合(非常に可能性が高い)、開発者に支援を依頼する必要があります。当社のテスターはテストを専門としており、コーディングはできません。
- 機能は、別の新しい機能がなくてもテストできます。たとえば、機能AとBは両方とも同時にテスト中ですが、どちらも
developブランチにマージされていないため、2つの機能は互いに認識していません。つまりdevelop、両方の機能が開発ブランチにマージされたときに、ブランチに対して再度テストする必要があります。そして、これを将来テストすることを忘れないでください。 - 機能AとBの両方がテストおよび承認されているが、マージされたときに競合が特定された場合、両方の機能の開発者は両方とも、テストを通過した機能ブランチであるため、自分自身の障害/ジョブではないと考えます。コミュニケーションには余分なオーバーヘッドがあり、競合を解決する人がいらいらすることもあります。
上記は私たちの物語です。リソースが限られているため、どこでもすべてをテストすることは避けたいと思います。私たちはこれに対処するためのより良い方法をまだ探しています。他のチームがこの種の状況をどのように処理するかを聞きたいです。
