Linq2Sql がとても好きなので、Linq to Sql をデータレイヤーとして使用して単純な Web アプリを作成しています。私は最近、DDD と TDD について少し読んでいて、試してみたいと思っていました。
何よりもまず、Linq2Sql と DDD がうまく機能していないことに気が付きました。私のもう 1 つの問題は、テストを見つけることです。実際、良いテストを定義するのは非常に難しいと感じているので、質問したいと思いました。
Linq2Sql がとても好きなので、Linq to Sql をデータレイヤーとして使用して単純な Web アプリを作成しています。私は最近、DDD と TDD について少し読んでいて、試してみたいと思っていました。
何よりもまず、Linq2Sql と DDD がうまく機能していないことに気が付きました。私のもう 1 つの問題は、テストを見つけることです。実際、良いテストを定義するのは非常に難しいと感じているので、質問したいと思いました。
まあ、TDD の標準的な解釈によれば、テストが開発を推進するということです。つまり、本質的に、テストから始めます。テストは失敗し、そのテストに合格するまでコードを記述します。ですから、それはあなたの要求によって動かされますが、あなたはそれらを集めようとします. アプリ/機能が何をする必要があるかを決定し、テストを記述してから、合格するまでコーディングします。もちろん、他にも多くの手法がありますが、これは TDD の世界で一般的に考えられていることを簡単に説明したものです。
テスト ケースの発見は、科学というより芸術です。ただし、簡単なガイドラインは次のとおりです。
テスト ケースの書き方に関する書籍は数冊出回っていますが、ドキュメント化されたテスト ケースを必要とする大規模な組織で作業している場合を除き、コード内の好ましくない部分 (つまり、 「純粋」ではありません)、それらのモジュールを完全にテストできることを確認してください。
テストの実際の目標、つまりバグを見つけることに心を向けてください。
プログラムが失敗する原因を創造的に想像してください。
テストはバグを見つける必要がありますが、プログラムが正常であることを確認する必要はありません。
これは便利なテクニックだと思います:
コントラクトとブールクエリを使用して自動テスト生成の品質を向上させる
参照: Lisa (Ling) Liu、Bertrand Meyer、Bernd Schoeller、Tap : Tests And Proofsの議事録、ETH Zurich、2007 年 2 月 5-6 日、eds. Yuri Gurevich と Bertrand Meyer、コンピュータ サイエンスの講義ノート、Springer-Verlag、2007 年。
私は定期的にサードパーティ API のテストを書いています。そうすれば、API が更新されたときに、壊れるかどうかがわかります。