NUnit と Selenium を使用したテスト方法があります。これは、本番サーバー上にある Web サイトでブラウザーを開き、ユーザーを登録して、登録が成功したことを確認します。
(理想的には、システム テストは本番環境ではなく別のテスト サーバーで実行する必要があることはわかっていますが、ここでは本番システムが機能するかどうかをテストしたいと考えています!)
問題は、このテストの結果としてデータベースの変更をロールバックする方法ですか? たとえば、状態を実行する前後のデータベースの状態は同じである必要があります。
3つの可能なオプションを考えましたが、どれも実用的ではありません:
1) テストを開始する前 (セットアップ) とテストを実行した後 (ティアダウン) に、実際のテーブルから削除する SQL クエリを記述します。これが私の現在のアプローチですが、このアプローチの問題は、実行するシステム テストごとにどのテーブルが関係しているかを正確に知る必要があり、テストが複数のテーブルに影響を与える可能性があるため、これはすぐに非常に複雑になる可能性があることです。
2) トランザクション コードの記述 コードの変更は、記述された単体テストではなく Web サイトによって行われるため、これはオプションではありません。
3) 各テストの開始前に既存のデータベース (SQL Server 2008 R2) のスナップショットを取得し、テストの終了後にスナップショットを元のスナップショットに復元します。ステージング環境でのみテストを実行できれば、このアイデアは良いと思いますが、問題は、テストを本番環境で実行する必要があり、完全に 5 分ほどかかる可能性があることです。その 5 分間に行われた変更は失われます。
この問題を解決するには、どのようなアプローチが最善の選択肢であるかを教えてください。4番目のオプションがあるかもしれませんか?
ありがとう、