大きなモックデータを維持するのは難しく、非現実的です。データベース構造が変更されると、さらに難しくなります。
偽。
単体テストでは、「大きな」模擬データは必要ありません。シナリオをテストするのに十分な模擬データが必要であり、それ以上は必要ありません。
また、真に怠laなプログラマーは、主題の専門家にさまざまなテストケースの簡単なスプレッドシートを作成するよう依頼します。簡単なスプレッドシート。
次に、怠zyなプログラマーは、スプレッドシートの行を単体テストケースに変換する簡単なスクリプトを作成します。本当に簡単です。
製品が進化すると、テストケースのスプレッドシートが更新され、新しい単体テストが生成されます。いつもやってください。それは実際に動作します。
MVVMとGUIのテスト機能を備えていても、GUIシナリオを再現するには多くのコードが必要です。
何?「再現」?
TDDのポイントは、テスト容易性のための設計(テストドライブ開発)です。GUIがそれほど複雑な場合は、よりシンプルでテストしやすいように再設計する必要があります。また、シンプルということは、より速く、より保守しやすく、より柔軟であることを意味します。しかし、ほとんど単純なほどテストが容易になります。
TDDを単純なビジネスロジックに限定するとうまくいくという経験があります。ただし、テスト(テスト領域)の組み合わせの数が非常に多いため、複雑なビジネスロジックのテストは困難です。
それは本当かもしれません。
ただし、主題の専門家に簡単な形式(スプレッドシートなど)でコアテストケースを提供するように依頼することは非常に役立ちます。
スプレッドシートはかなり大きくなる可能性があります。しかし、単純なPythonスクリプトを使用してスプレッドシートをテストケースに変換したので、それは大丈夫です。
そして。スプレッドシートが不完全だったため、いくつかのテストケースを手動で作成する必要がありました。
しかしながら。ユーザーが「バグ」を報告したとき、スプレッドシートのどのテストケースが間違っているかを尋ねました。
その時点で、主題の専門家はスプレッドシートを修正するか、何が起こるかを説明するための例を追加します。バグレポートは、多くの場合、テストケースの問題として明確に定義できます。実際、私の経験から、バグを壊れたテストケースとして定義すると、議論がはるかに簡単になります。
専門家は、非常に複雑なビジネスプロセスを説明しようとするのではなく、プロセスの具体例を作成する必要があります。
TDDでは、要件が100%正しいことが要求されます。このような場合、テストの作成中に競合する要件がキャプチャされることが予想されます。しかし問題は、これは複雑なシナリオには当てはまらないということです。
TDDを使用しないことは、要件が100%正しいことを絶対に義務付けています。一部の人々は、TDDは不完全で変化する要件に耐えることができると主張していますが、TDD以外のアプローチは不完全な要件では機能しません。
TDDを使用しない場合、実装フェーズの後半で矛盾が見つかります。
TDDを使用する場合、コードがいくつかのテストに合格し、他のテストに失敗すると、矛盾がより早く発見されます。実際、TDDを使用すると、プロセスの早い段階で、実装(およびユーザー受け入れテスト中の引数)のかなり前に矛盾の証拠を得ることができます。
いくつかのテストに合格し、他のテストに失敗するコードがあります。それらのテストのみを見ると、矛盾が見つかります。ユーザーは矛盾について議論し、目的の動作の一貫した具体的な例を作成する必要があるため、実際には非常にうまく機能します。