あなたが正しい軌道に乗っているとは思いません。SpecFlow は BDD ツールですが、ある意味ではプロセスの一部しかカバーしていません。http://lizkeogh.com/2013/07/01/behavior-driven-development-shallow-and-deep/を読んで、シナリオがおなじみのように聞こえるかどうかを確認してください。
先に進むには、http://dannorth.net/introducing-bdd/から始めて、すべてがどのように始まったかを理解することをお勧めします。それでは、あなたのポイントを考えてみましょう。
テスターは、すべてのテスト データを提供します。はい、いいえ。アイデアは、あなた自身と機能の専門家の間で、機能を開発するために必要なすべての例を提供する会話を行うことができるということです. その会話に参加しない場合、すべてのデータは反対側から取得されますが、適切な質問をして会話を導くことができるかのように、それほど高品質ではない可能性があります。データは、テストもコーディングできる構造に従います。ここでの例として、私が最初に BDD を使い始めたとき、ビジネスの専門家に平文のシナリオ ファイルを作成してもらい、開発からの入力を減らすことができると考えていましたが、実際には、私たちが関与したときよりもドキュメントの有用性が低下する傾向がありました。まともな仕様書が書けなかったからではなく、
なぜデータはデータベースに入るのですか? 優れたテストは、テスト対象のスコープに分離されています。UI レイヤー テストの場合、これはデータベースがないことを意味します。ビジネス層のテストでは、データを取得するためにデータベースに依存するべきではありません。実際には、データベースはテストに含めるのが最も難しいものの 1 つです。データの一部が変更されると、カスケード テストの失敗が発生するからです。代わりに、機能を小さくして、シナリオまたはバインディングでテスト用のデータを提供することをお勧めします。テスト パックの 50 行目はどちらの当事者も覚えているものではないため、これにより会話が容易になります。;-) 代わりに、データ ID を提供することをお勧めします。そのため、「ボブ」は、議論できるテストで個別である可能性があり、両方の側が彼を興味深い例にする理由を理解しています。
幸運を :-)
更新: テスト中にデータベースを使用することに関して、私の経験では、データベースを使用するのが難しい選択となる多くの複雑さがあるということです。これらの点を考慮して、
- テスト間でデータの状態をどのようにリセットしますか?
- 1 つまたはいくつかのテストが失敗した場合、どのように状態をリセットしますか?
- ブランチを使用している場合、または 2 人の開発者が同時に変更を行っている場合でも、複数のテスト データセットをどのようにサポートしますか?
- 同時に実行されるテストの 2 つのインスタンスをどのように処理しますか (ビルド サーバーを忘れないでください)。
使用できるいくつかのパターンが含まれているこの質問SpecFlow Integration Testing with Database Patternsを見てください。