後でテストするほど、テストの作成にかかるコストが高くなります。
バグの寿命が長いほど、修正に費用がかかります。
収益の減少の法則により、バグがないことを確認するために忘却に身を任せることができます。
仏は中道の知恵を教えました。テストは良いです。あまりにも良いことのようなものがあります。重要なのは、バランスが崩れていることを知ることができることです。
テストなしで記述するコードの各行は、コードを記述する前にテストを記述した場合よりも、後でテストを追加するためのコストが大幅に高くなります。
テストなしのコードの各行は、デバッグまたは書き換えが非常に難しくなります。
作成するすべてのテストには時間がかかります。
すべてのバグは修正に時間がかかります。
忠実な人は、最初に失敗したテストを書かずにコードを1行も書かないことを教えてくれます。このテストにより、期待どおりの動作が得られることが保証されます。テストにより動作が同じであることが証明されるため、システムの他の部分に影響を与えることを心配することなく、コードをすばやく変更できます。
テストでは機能が追加されないという事実に対して、これらすべてを比較検討する必要があります。製品コードは機能を追加します。そして、機能は請求書を支払うものです。
実用的に言えば、私が取り除けるすべてのテストを追加します。私はテストを見ることに賛成してコメントを無視します。私は、コードが信じていることをするためのコードすら信用していません。テストを信頼しています。しかし、私はたまにhメアリーを投げてラッキーになることが知られています。
ただし、成功したコーダーの多くはTDDを行いません。それは彼らがテストしないという意味ではありません。彼らは、コードのすべての行がそれに対して自動化されたテストを持っていることを強引に主張しません。ボブおじさんでさえ、UIをテストしていないことを認めています。彼はまた、すべてのロジックをUIから外すように主張しています。
フットボールの比phor(つまりアメリカンフットボール)として、TDDは優れたグラウンドゲームです。あなたがコードの山を書いて、それが機能することを望んでいる場合の手動のみのテストは、成功するゲームです。どちらでも得意です。両方を行うことができない限り、あなたのキャリアはプレーオフになりません。それぞれを選択するタイミングを学ぶまで、スーパーボウルは作成されません。しかし、特定の方向にナッジが必要な場合:私が追い越しているとき、役人の呼び出しはより頻繁に私に反対します。
TDDを試してみたい場合は、職場で行う前に練習することを強くお勧めします。TDDが途中で、半分で、半分で、そして半ば嫌悪されたことが、一部の人がそれを尊重しない大きな理由です。1杯の水を別のコップに注ぐようなものです。コミットせずにすばやく完全に行うと、テーブル全体に水が滴り落ちることになります。