階層化されたアーキテクチャを持つエンタープライズ アプリケーションに TDD を適用する方法は?
以下のアプリケーションにTDDを適用する方法を知りたい
- WPF アプリケーション (6 ~ 7 画面)
- 3-4 モジュール(プリズムモジュール)
- 一部のアプリケーション サービス (ロギング、例外処理、セキュリティ、承認、コア ビジネス サービス ライブラリ)
- データ アクセス層 (Entity Framework を使用)
- 一連の WCF サービス
私が理解しているように、最初のことはアーキテクチャを正しくすることです。その結果、コンポーネントが識別されます。次は、コンポーネントを個別に開発することです。
TDD では、(コンポーネントの) 設計は時間とともに進化します。次のコンポーネントの場合、TDDを使用する方法は(私が認識しています)です
- すべてのユースケースを特定する
- すべてのテスト ケースを特定する
- テスト ケースごとにすべてのシナリオを記述し、シナリオごとに失敗するテスト ケースを記述します。テスト ケースに合格するように、小さなコードを作成します。新しいシナリオが見つかった場合、リストに追加
- すべてのテスト ケース (すべてのシナリオに対応) がパスするまで、Red-Green-Refactor に従います。
- リファクタリングでは、DRY、YAGNI、Mocking、DI などを忘れないでください。
- 最終結果は適切に設計されたコンポーネントです (どれだけ適切に設計されているかは、開発者の経験とスキルに依存します)。
私が直面している問題は、コンポーネントの場合、TDD プロセスのステップ 6 に到達するまで、インターフェイスがわからないことです。複数のコンポーネント、複数のチームがあるため、彼らが何を思いつくかは誰にもわかりません。
上記のシナリオに基づく要約の質問
- 欠けている基本はありますか?はいの場合は、適切なリソースを教えてください。
- レイヤード アーキテクチャに TDD を適用する方法は?
- 複数のコンポーネントを並行して開発する方法
- WPF UI (PRISM) を使用した TDD のベスト プラクティス
- データベースを使用した TDD のベスト プラクティス (Entity Framework を使用)
- TDDを使用する場合、WCFサービス契約を決定する方法は?