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