提供する研究論文や統計情報はありませんが、過去に低から平均の単体テストのカバレッジがあり、エンドツーエンドのテストがなく、徐々にチーム/組織で働いていた経験を紹介します。バーを現在の場所に移動し、ATDDを追加します(ただし、皮肉なことに、 従来のTDDはない)アプローチ。
具体的には、プロジェクトのタイムラインを使用して、同じ組織内の他のチーム/製品で引き続きプレイアウトする方法です。
- 最大4週間の分析と実装
- 2週間の回帰テスト、バグ修正、安定化、リリース準備
- 既知の欠陥を修正する1〜2週間
- 2〜3週間のコードのクリーンアップとポストプロダクションの問題/サポート(不明な欠陥/計画外の停止)
これはばかげたオーバーヘッドのように見えますが、実際には非常に一般的であり、多くの組織ではQAが欠落している、または効果がないことがしばしば隠されています。優秀なテスターと集中的なテストの文化があるため、これらの問題は数か月/年にわたってゆっくりとプレイすることを許可されるのではなく、早期に発見され、前もって修正されます(ほとんどの場合)。メンテナンスオーバーヘッドの55〜65%は、デバッグに費やされる時間の80%の一般に受け入れられている標準よりも低くなっています。これは、ユニットテストと機能横断チーム(QAを含む)があるため、合理的と思われます
私たちのチームの最新製品の最初のリリース中に、受け入れテストの改良を開始しましたが、それらは完全にうまくいかず、まだ多くの手動テストに頼らなければなりませんでした。このリリースは他のプロジェクトよりもやや痛みが少なく、IMOは偶然の受け入れテストが原因であり、また一部は他のプロジェクトと比較して非常に高いユニットテストのカバレッジが理由です。それでも、リグレッション/安定化に約2週間、ポストプロダクションの問題に2週間を費やしました。
対照的に、最初のリリース以降のすべてのリリースには、早期の受け入れ基準と受け入れテストがあり、現在の反復は次のようになっています。
- 8日間の分析と実装
- 2日間の安定化
- ポストプロダクションサポートとクリーンアップの0〜2日
つまり、55〜65%のメンテナンスオーバーヘッドから20〜30%のメンテナンスオーバーヘッドに進みました。同じチーム、同じ製品、主な違いは、受け入れテストの進歩的な改善と合理化です。
それらを維持するコストは、スプリントごとに、QAアナリストが3〜5日、開発者が1〜2日です。私たちのチームには4人の開発者と2人のQAアナリストがいるので(UX、プロジェクト管理などは含みません)、60のうち最大7人日です。これは、実装のために15%の実装オーバーヘッドに切り上げます安全な側。
各リリース期間の15%を費やして自動受け入れテストを開発し、その過程で各リリースの70%を削減して、回帰テストを行い、運用前および運用後のバグを修正します。
2番目のタイムラインが最初のタイムラインよりもはるかに正確で、はるかに短いことにお気づきかもしれません。これは、事前の受け入れ基準と受け入れテストによって可能になったものです。これは、「完了の定義」を大幅に簡素化し、リリースの安定性にはるかに自信を持つことができるためです。他のチームは(これまで)隔週のリリーススケジュールで成功していません。ただし、かなり些細なメンテナンスリリース(バグ修正のみなど)を行っている場合を除きます。
もう1つの興味深い副作用は、リリーススケジュールをビジネスニーズに適合させることができたことです。あるときは、別のリリースに合わせて約3週間に延長する必要があり、テストや安定化に余分な時間を費やすことなく、より多くの機能を提供しながらそれを行うことができました。また、休日やリソースの競合のため、約1週間に短縮する必要がありました。開発作業を少なくしなければなりませんでしたが、予想通り、新しい欠陥を導入することなく、テストと安定化にかかる時間を短縮できました。
私の経験では、受け入れテストは、特にプロジェクトまたはスプリントの非常に早い段階で行われ、プロダクトオーナーによって書かれた受け入れ基準で十分に維持されている場合、あなたができる最善の投資の1つです。他の人が正しく作成の詳細に焦点を当てていると指摘、伝統的なTDDとは異なり、テスト可能なよりも、コードを、無欠陥コード- ATDDは本当に助けキャッチ欠陥を行いたくさん速いです。毎日完全なリグレッションテストを行うテスターの軍隊を組織化するのと同じですが、はるかに安価です。
ATDDは、RUPまたは(タフな)ウォーターフォールスタイルで行われる3か月以上の長期プロジェクトで役立ちますか?私はju審員がまだそれについて出ていると思う。私の経験では、長期プロジェクトの最大かつandいリスクは、非現実的な期限と要件の変化です。非現実的な期限により、テストのショートカットを含むショートカットが作成され、要件を大幅に変更すると多数のテストが無効になり、テストの書き換えが必要になり、実装のオーバーヘッドが増大する可能性があります。
ATDDは、アジャイルモデル、または公式にはアジャイルではないが非常に頻繁なリリーススケジュールを持つチームにとって、素晴らしい成果をもたらすと確信しています。長期プロジェクトでこれを試したことはありません。主に、この種のプロジェクトでそれを試そうとする組織に参加したことも聞いたこともないので、ここに標準免責事項を挿入します。YMMVなど。
PS私たちのケースでは、「顧客」からの特別な努力は必要ありませんが、受け入れ基準を実際に書く専任の専任のプロダクトオーナーがいます。あなたが「コンサルティングウェア」ビジネスに携わっているなら、エンドユーザーに有用な受け入れ基準を書かせるのははるかに難しいかもしれません。プロダクトオーナー/プロダクトマネージャーはATDDを実行するために非常に重要な要素のようです。もう一度自分の経験からしか話せませんが、その役割を果たせる誰かがいなければATDDが成功していると聞いたことはありません。