2011-01-12 11 views
1

それぞれがデスクトップマシンを表す一連の行を返します。選択クエリのユニットテスト

私はこれをユニットテストする方法を見つけるのが面倒です。実際に私が考えることができるエッジケースや基準はありません。私が確かに5ヶ月前のデータを取得していることを確認したい株価のようなものではありません。特定の長さが常に機能するか、特殊文字などか、通貨と異なる通貨(£、$など)を文字列としてチェックできる場所は、人の詳細を格納するようなものではありません。

このような結果セットをテストするにはどうすればよいですか?

また、クエリのreturnsetをテストするには、いくつかの問題があります:あなたは、サーバー上でクエリを実行すると、誰かが変更される可能性があるため、脆性であるよう

1)試験は、あなたが行数が同じテーブルデータ。これは、変更スクリプトをアップロードしない限り誰も変更しないテストサーバーを使用しているときですか?

2)データセットオブジェクトがヌルでないことをテストしますか?だから、それはnullとしてインスタンス化されているが、クエリの実行後ではない、それは値を保持している(これはデータが正しいことを証明しない、ちょうどそのデータが取得されている)。

おかげ

答えて

0

1 -

a)は、これまで何らかの理由で、運用サーバーに対してテストしないでください。

b)テストは、モックオブジェクトまたはテストデータベースで行うことができます(単体テストはモックオブジェクトを使用し、統合テストではテストデータベースを使用する必要があります)。

テストケースについては、基本的な機能テストから始めてください。「通常の」行を入れて戻してください。後でリファクタリングすれば、そのテストを受けていただければ幸いです。ヌルまたは空白の列にプログラムが正しく応答することを確認します。すべてのDBフィールドに最大値と最小値を設定し、それらを格納しているオブジェクトフィールドがその解像度に適合することを確認します。 DB内の重複レコード、またはレコードの欠落を確認してください。実動データがある場合は、そのスナップショットを取得してテストDBに入れ、ロードが正しく行われていることを確認します。プログラムの他の部分で慢性的に問題を引き起こす価値はありますか?ここでもそれをチェックしてください。そして、コードをリリースしたら、実稼働環境でシステムを破壊する値をテストリストに追加します(回帰テスト)。

1

データベースをシミュレートするNBuilderのようなコンポーネントを使用できます。また、データセットのすべての側面を管理できるので、データベースのやり取りのいくつかの側面(クエリが返すレコード数、一部のフィールドの値の範囲)をテストできます。また、データセットは常に引数を使用して作成されるため、データは常に同じであるため、データベースから完全に切り離されたテストを再現することができます。