TDD-短期的な利益/メリットは何ですか?


8

多くの場合、TDDを使用する利点は「長期的な」利益と見なされます。コード全体がより適切に構造化され、テストが容易になり、全体として顧客から報告されるバグが少なくなります。

しかし、TDDを使用することの短期的なメリットはどこにありますか?実際に弱くて簡単に測定できるものはありますか?

長期的な利益が測定可能である場合、明らかな(または定量化によっては明らかではない)短期的な利益を得ることが重要ですか?

回答:


11

TDDにはいくつかの短期的な利点があり、他のものより測定可能です。ここに私の頭の上からいくつかあります:

  • 古き良きSOLIDの原則に従ったクリーンなコード。つまり、テストをコードと同じくらいクリーンに保ち、ダーティハイブリッドテストコード回避すると、コードはSOLIDに従う傾向があります。クリーンなコードは読みやすく、コードを最初から保守しやすくなります。メンテナンス時間を節約できますが、短期的には、よりクリーンなコードをすばやく入手できます(バックアップするためのテストがあるため)。

  • 最初から回帰テスト。あなたはそれを壊します… あなたはそれについて知っているでしょう…早く。CIサーバーに支えられて、これはあなたの髪を節約します。テストなしで早期に発見されるリグレッションバグを修正するための工数を測定することは困難ですが、それは多くの工数と言えます。

  • 推測しすぎずにリファクタリングを実行できます。クラスに対してテストスイートを実行した場合、最初からテストを定義しているため、リファクタリング(メソッドの抽出、他のデータ構造の使用、クラスの抽出など)は簡単です。1つのクラスをリファクタリングするのに数日かかるのは1つ未満です。以前からテストを行っていれば、すぐに実行できます。

  • テスト駆動設計により、コードの重複を早期に修正できます。少なくともあなたがプログラマーであるならば。重複したコード(テストコードと本番コードの両方)でのテストはすぐに退屈な作業になるためです。テストコードを賢く使用すればするほど、より良い結果が得られます。少ないコード、少ない手間、より多くの工数が節約されます。

編集私もたまたま同意するフランク・シアラーによって追加されました:

いつでも作業コードがあります(現在作業しているテストケースを除く)。

TDDを通じてバグや設計の問題を早期に発見することは非常に貴重であり、工数でどれだけ節約できるかを測定することは困難です。ただし、1つの方法は、開発の後半で設計の問題に取り組むために費やした時間を数えることです。ユニットテストを使用すると、実際のアプリケーションやシステムを実行しなくても、テストを通じてコードのサブセットを実行できます。そうすれば、あなたはそれをTDDを介して自分自身を確保することができ、いくつかのパートプログラムのがされて作業、それは現時点では本物にフックアップされていない場合でも、。


2
そして:いつでも作業コードがあります(現在作業しているテストケースを除く)。
Frank Shearar、2011年

2

短期的には、小規模なプロジェクトを意味しますか、それともプロジェクトの初期を意味しますか?

残りのプロジェクト全体の柱を確認できたので、初期の基礎を築きながらテストを統合するとすぐに効果が得られると思います。私は上から下に設計し、下から実装する傾向があるので、これは私の作業方法に意味があります。

不整合を1つでもキャッチできれば、後で複雑なプログラムをデバッグしなくても済むようになり、作業はうまくいきました。

さらに、プロジェクトはすでにテスト用に設定されており、後でリグをリファクタリングする必要はありません。


2
テストによってガイドされる成長するオブジェクト指向ソフトウェアは、これを「ウォーキングスケルトン」と呼びます。これは、アーキテクチャの完全なエンドツーエンドのテストを可能にし、自動的に展開可能な最小限の構造です。それができたら、安全かつ着実にアプリケーションの骨に肉を付けることができます。そうすることで、すべてのコードが機能し、いつでもデプロイできることがわかります。
フランクShearar '27

「短期的な利益」とは、プロジェクトの規模に関係なく、短時間で確認/認識できるTDDを実行することで得られる利益です。また、TDDを行っている人だけでなく、他の人(マネージャー、PM、顧客など)からも「見られる/認識される」。
ratkok 2011年

2

TDDから得られる非常に短期的なメリットは、達成しようとしていることにそれほど集中する必要がないことです。

TDDを使用せずに作業が中断された場合、タスクに戻ったときに自分がどこにいるかを思い出させるのに数分かかります。

TDDを使用して、テストを実行するだけで、どれが失敗するかを確認し、すぐに自分が何を達成しようとしているかがわかります。私はより少ない脳の痛みでより速く働きます。


これは興味深いものです-この利点については考えたことはありません。しかし、これはTDDがマルチタスクを促進またはサポートするように思えるかもしれませんが、これはアジャイルであり、XPが本当に(最小化しないとしても)最小化しようとするものです。
ラトコック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.