テスト駆動開発コードの注文


8

テスト駆動開発を使用して最初のプロジェクトを開発しています。Zend FrameworkとPHPUnitを使用しています。

現在、私のプロジェクトは100%のコードカバレッジですが、自分のコードを記述する順序を理解できていません。

私のオブジェクトが何をすることが期待されているかで最初にテストを書くべきですか、それとも私のオブジェクトを書き込んでからそれらをテストするべきですか?

私はコントローラー/モデルを完成させ、それに対するテストを作成することに取り組んできましたが、これがTDDの目的であるかどうかはわかりません。

何かアドバイス?

たとえば、AuthプラグインとAuthコントローラーを作成し、それらがブラウザーで正しく動作することをテストしました。それから私は座って彼らのためにテストを書き、ブラウザで機能するコードにいくつかの論理エラーがあることを証明しました。

回答:


20

最初にテストします。TDDは「テストファースト開発」とも呼ばれるIOWです。

あなたが働いているのはTDDではありません。

TDDは1-2-3です。

  1. 失敗したテストを作成します。
  2. 成功させる(途中で罪や近道を犯す)
  3. 重複を削除します(物理的なものだけでなく、論理的な)。

短い言葉で言えば、これも「失敗させる/機能させる/正しくする」と宣伝されています。

Kent Beckのすばらしい本「Test-Driven Development By Example」の詳細。


11
+1これらの3つのステップは「Red-Green-Refactor」とも呼ばれます。
フェントン2012

2
合格させる:合格するほど多くのコードのみを記述してください。それは非常に重要です。
オリンズ2012

2
以前はテストファースト開発と呼ばていましたが、誤解を招く可能性があります。テストを最初に作成することではなく、テストで設計と開発を推進することです。最初にテストを作成することは、単にそのための前提条件です。まだ存在しない場合、どのようにしてテストを実行できますか?ただし、最初にテストを記述して、それらを実行させずに、TDDを実行することはできません。
イェルクWミッターク

3
@deltree erm ...私はあなたがしたすべての声明に同意しません!
Froome 2012

2
「コードカバレッジ!= TDD」を除く:p
Froome
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.