0

テストが完了したらデータをクリーンアップすることについて多くの質問がありました。彼らの多くは、実際のデータベースの使用を避けるためにデータベースを模擬し、テストが終わったらそれをきれいにすると言っています。それが私が行っていることとうまくいくかどうかは分かりません。UI受入れテスト後に追加されたレコードをデータベースに整理する

WebUI用にSeleniumを使用し、テストランナー用にNUnitを使用して、.NetにSpecFlowを使用しています。

アプリケーション自体は、大規模なマルチページのWebアプリケーションです。

SpecFlowの機能はページ機能で区切られていますが、ほとんどのページに作成されたレコードが表示されている表がない場合はほとんどの場合です。 Ex。新しいカテゴリを作成し、そのページに追加されたカテゴリを表に表示します。これらのテストを何度も実行するには、テストがデータベースから作成した追加されたレコードをすべて削除して、テストが再開されたときに同じカテゴリを再作成する必要があります。

データベースから追​​加されたレコードを削除するために、ストアドプロシージャで渡される各機能の後に実行するスケルトン設定があります。テスト環境で異なるテストクライアントのレコードを削除するリスクがあるため、このアイデアには多くのプッシュバックがありました。

私の質問は、データベースをクリーンアップするベストプラクティスは何ですか?

+1

申し訳ありませんが、テストやライブデータを意味することを心配しています、あなたは株式は、テストデータを本番クライアントデータを生きたデータベースを使用していますか? – AlSki

+0

さて、申し訳ありませんが、生産に入る前のすべての環境にプロダクションクライアントデータがありません。ただし、これらのテストをprodで実行したい場合は、テストクライアントがデータベースを共有します。私たちはまだそのレベルにはいませんので、実際にはまだ決定されていません。 –

答えて

1

テストの実行前と実行後の両方でテストデータを削除することをお勧めします。このようにして、テストが途中で中断しても後でクリーンアップしなくても、データはクリーンアップされます。

specflowでは、前シナリオ/後シナリオ/前フィーチャ/後フィーチャフックを使用してこれを実現できます。

可能であれば、テストごとに新しいデータベースを作成することが理想的です。データベース全体を削除するだけで済みます。これにより、テストを並行して実行することができます。

これができない場合は、テストごとにテストデータを一意に識別する方法が必要です。

それはあなたの質問が同じデータベースに

+0

ありがとうございます!私は現在、機能の前と機能の後の両方で動作するようにセットアップしています。私は、テスト中に影響を受けたテーブルから作成されたデータをクリアする最適なソリューションを見つけようとしています。それがバックアップを作成してからリストアするか、ストアドプロシージャを実行してテストクライアント固有の行を削除するか、またはソフト削除を使用しているかどうか。誤解をおかけして申し訳ありません。すべてのクライアントはテストクライアントであり、すべてのテストデータが作成されています。 –

関連する問題