いくつかの回答の側面をまとめて、2pを追加するには...
注:私のコメントは、特に UIテストではなく、データベーステストに関連しています(ただし、明らかに同様に適用されます)。
データベースは、フロントエンドアプリケーションと同じくらいテストする必要がありますが、「フロントエンドで動作しますか?」に基づいてテストされる傾向があります。または「レポートは正しい結果を生成しますか?」、私の意見では、データベース開発のプロセスの非常に遅いテストであり、あまり堅牢ではありません。
通常のUAT /パフォーマンス/その他に加えて、データウェアハウスデータベースのユニット/統合/システムテストを利用するクライアントが多数あります。テスト。彼らは、継続的な統合と自動テストにより、従来のUATに到達する前に多くの問題を拾い上げ、UATの時間を節約し、UATが成功する可能性を高めることに気付きました。
フロントエンドまたはレポートのテストに関して、データベースのテストに同様の厳密さを適用する必要があることにほとんどの人が同意するはずです。
テストで重要なことは、エンティティの複雑な組み合わせに進む前に、小さな単純なエンティティをテストして正確性を確認し、より広いシステムに拡張する前に正確性を確認することです。
だから私の答えにいくつかのコンテキストを与える...
単体テスト
- テーブル、ビュー、関数、ストアドプロシージャなど、ユニットが機能することを証明するためのテストの焦点がある
- インターフェイスを「スタブ」して、外部の依存関係を削除する必要があります
- 独自のデータを提供します。データの既知の開始状態が必要です。そのため、事前テストのデータが存在する可能性がある場合は、ポピュレーションの前に切り捨て/削除を行う必要があります。
- 独自の実行コンテキストで理想的に実行されます
- 自動的にクリアし、使用したデータを削除します。これは、スタブが使用されていない場合にのみ重要です。
これを行う利点は、テストのすべての外部依存関係を削除し、正確性を証明するために最小限のテストを実行することです。明らかに、これらのテストは運用データベースでは実行できません。ユニットの種類に応じて、次のようなさまざまな種類のテストが行われる場合があります。
- スキーマチェック、これを「データコントラクト」テストと呼ぶ人もいます
- 通過する列値
- 関数、プロシージャ、ビュー、計算列のデータの異なる値を使用した論理パスの実行
- エッジケーステスト-NULL、不正なデータ、負の数、大きすぎる値
(ユニット)統合テスト
私が見つかりました。このSEが投稿テストの様々なタイプの話をするのに役立ちます。
- ユニットが統合されることを証明するためのテストに焦点を当てています
- 多数のユニットで一緒に実行
- インターフェイスを「スタブ」して、外部の依存関係を削除する必要があります
- 外部データの影響の影響を除去するために、独自のデータを提供します
- 独自の実行コンテキストで理想的に実行されます
- 自動的に消去され、作成されたデータを削除します。これは、スタブが使用されていない場合にのみ重要です。
単体テストからこれらの統合テストに移行する場合、より多様なテストケースをテストするために、わずかに多くのデータが存在することがよくあります。明らかに、これらのテストは運用データベースでは実行できません。
これは、システムテスト、システム統合テスト(エンドツーエンドテストとも呼ばれます)に進み、データ量とスコープが増加します。これらのテストはすべて、回帰テストフレームワークの一部になる必要があります。これらのテストの一部は、ユーザーがUATの一部として実行するために選択する可能性がありますが、UATはユーザーによって定義されたテストであり、ITによって定義されたものではありません-一般的な問題です!
あなたの実際の質問に答えるために、コンテキストを与えました。
- ユニットおよび統合テストのデータを事前に入力すると、誤ったテストエラーが発生する可能性があるため、避ける必要があります。
- 一貫したテストを保証する唯一の方法は、ソースデータに関する仮定をせず、厳密に制御することです。
- あるテスターが、ソース管理されたデータベースコードの異なるブランチで同じテストを実行する別のテスターと競合しないようにするために、個別のテスト実行コンテキストが重要です。