55

どちらのアイデアも私には非常に似ているように聞こえますが、微妙な違いやまったく同じことが異なる方法で説明されている可能性があります. TDD とテスト ファーストの開発/プログラミングとの関係はどのようなものですか?

4

8 に答える 8

69

駆動因子が何であるかという点で違いがあります。

クラス (またはシステム - これはもちろんさまざまなスケールで発生する可能性があります) がどのように見えるべきかについて漠然とした考えがありますか?それから実際の形を与えるテストを考えますか? それがTDDです。

クラスのパブリック API がどうあるべきかを正確に理解しており、実装の前にテストを書くだけですか? それがテストファースト開発です。

私のスタイルは、この 2 つの混合物になる傾向があります。テストを書く前に API がどうあるべきかが明らかな場合もあれば、テスト容易性が実際に設計を左右する場合もあります。

別の言い方をすれば、TDD は「何を質問したいのか?」から始まります。一方、非 TDD (テストが最初であるかどうかに関係なく) は、「どのような回答をしたいですか?」で始まります。

于 2008-12-02T17:43:57.673 に答える
26

これらは基本的に同じものを表す異なる名前です。実際には 5 つの名前があります。最後の D はデザインと開発を表すことができるからです。

Test First はもともと、特にエクストリーム プログラミングのコンテキストで、テスト、コード、リファクタリングのサイクルに対して使用されていた用語です。テスト駆動開発という名前が提案され、すぐに採用されましたが、これは、TFD がテスト戦略よりも設計戦略であるという事実を強調するためです。

明らかに今日、これらの 2 つの用語に異なる意味合いを持つ人もいますが、それはそれらの存在の背後にある意図ではありませんでした。実際、TFD という用語は非推奨と見なした方がよいでしょう。

于 2008-12-02T20:03:01.903 に答える
12

TDD = TFD + リファクタリング。

TFD を行うときは、リファクタリングを適用して、コードをより一般的で堅牢なものにします。

于 2008-12-02T17:42:20.673 に答える
1

TDD (テスト駆動開発) はテスト ファースト開発/プログラミングですが、TDD が永続的で反復可能な単体テスト (コードの後でさえ) を作成することを意味するのを見たり聞いたりしたことがありますが、実際には、テストするコードの前にテストが記述されることを意味します。

于 2008-12-02T17:43:22.997 に答える
0

それらはまったく同じものです。両方とも、最初にテストを記述し、次にテストに合格するコードを記述します。

于 2008-12-02T17:38:42.567 に答える