データ ジェネレーターを使用したデータベースのテスト データの生成

Visual Studio Premium を使用すると、データベース プロジェクト内のデータベース オブジェクトの動作を検証するために必要なテスト データを作成できます。 データベースのスキーマに従っていて、本番データとは関係のないデータを生成できます。 この手法で、本番データのプライバシーまたはセキュリティを保護できます。

特定のテーブルおよび列についてデータの生成方法の詳細を指定した、データ生成計画を定義します。 各列について、特定の種類のデータを生成するデータ ジェネレーターを指定します。

データベース プロジェクトのデータ生成計画を作成する場合、その計画はプロジェクトのスキーマに基づいたものになります。 データ生成計画を作成した後でスキーマが変更された場合、計画を更新するよう求めるメッセージが表示されます。

重要

スキーマの変更に基づいてデータ生成計画を更新しないと、計画の変更を続行できません。 データ生成計画をいったん閉じて開き直すと、メッセージが再び表示されます。

データベース単体テストを実行する場合、テスト プロジェクトごとに異なるデータ生成計画を指定できます。 そのため、テスト グループごとに、データベースを異なる状態に初期化できます。

データ ジェネレーター

Visual Studio Premium には、さまざまな種類のデータを生成するための複数のデータ ジェネレーターが組み込まれています。 たとえば、整数データ ジェネレーターはランダムな整数値を生成し、文字列ジェネレーターはランダムな文字列を生成し、正規表現ジェネレーターは指定したパターンに一致する文字列を生成します。 標準データ ジェネレーターの詳細と一覧については、「標準データ ジェネレーターの種類」および「列へのデータ生成の詳細の指定」を参照してください。

Visual Studio Premium に付属するジェネレーターで、要件に合うデータを生成できない場合、カスタムのジェネレーターを作成できます。 たとえば、データベースに別の列を参照する CHECK 制約が設定された列がある場合は、カスタム データ ジェネレーターを作成する必要が生じることがあります。 詳細については、「カスタム データ ジェネレーターを使用した特殊なテスト データの生成」を参照してください。

SPARSE 列と COLUMN_SET を含むテーブルのデータを生成する場合、エラーが発生する場合があります。 詳細については、「データ生成に関する問題のトラブルシューティング」を参照してください。

チーム環境のデータ生成計画

データ生成計画は、データベース スキーマに関する情報や、指定した各テーブルの列ごとのデータ生成を制御する構成情報を含んだ XML ファイルです。 約 40 個のテーブルを含んだデータベースでも、データ生成計画は 8 MB に達することもあり、行数も 100,000 行を超える場合があります。

Team Foundation バージョン管理 または他のバージョン管理システムを使用して、.dgen ファイルへ自動的に変更をマージすることはできません。 サイズの大きな XML ファイルを手動でマージする際に使用するプロセスは困難で、エラーの原因にもなります。 変更が必要な計画に対して排他的チェックアウトを使用すると、データ生成計画に関連する問題を最小限に抑えることができます。

データ ジェネレーターのセキュリティ

データ生成計画とカスタム データ ジェネレーターは、チーム環境で共有できます。 共有データ生成ファイルを共有または使用する前に、次のセキュリティ リスクについて考慮しておく必要があります。

  • データ生成計画のスキーマ情報
    データ生成計画を作成すると、.dgen ファイルにはテーブルのスキーマが含まれます。この情報は、企業の機密事項の場合もあります。 .dgen ファイルを共有すると、ファイルを共有したユーザーはスキーマを参照できます。 データ生成計画は信頼されるソースとのみ共有してください。

  • データ生成計画の悪意のあるコード
    データ生成計画にデータ バインド ジェネレーターが含まれる場合、計画の実行時に実行される Transact-SQL クエリを記述します。 この手法を使用すると、データ生成計画の内部から任意の Transact-SQL が実行される可能性があります。 データ生成計画は必ず信頼された発行元からのみ取得し、信頼されない発行元から受け取ったデータ生成計画は実行しないようエンド ユーザーに警告してください。

  • 接続情報とカスタム データ ジェネレーター
    すべてのカスタム データ ジェネレーターは、実行時にデータベース接続文字列へアクセスできます。 悪意のあるカスタム ジェネレーターは、接続文字列の情報を公開する可能性があります。 カスタム データ ジェネレーターは必ず信頼された発行元からのみ取得し、信頼されない発行元から受け取ったカスタム データ ジェネレーターは使用しないようエンド ユーザーに警告してください。

  • カスタム データ ジェネレーターの悪意のあるコード
    カスタム データ ジェネレーターは、任意のコードを含む可能性のあるクラスです。 カスタム データ ジェネレーターを使用すると、アクティブ ユーザーと同じアクセス許可で実行されます。 この手法を使用すると、悪意のあるコードが FullTrust モードで実行される可能性があります。 カスタム データ ジェネレーターは必ず信頼された発行元からのみ取得し、信頼されない発行元から受け取ったカスタム データ ジェネレーターは使用しないようエンド ユーザーに警告してください。

  • カスタム データ ジェネレーターのインストーラーの悪意のあるコード
    カスタム データ ジェネレーターをインストールする配置プロジェクトを作成できます。 配置プロジェクトには任意のコードを含めることができます。 カスタム データ ジェネレーターのインストール プログラムを実行すると、昇格されたアクセス許可でプログラムが実行されます。 この手法を使用すると、昇格されたアクセス許可で悪意のあるコードが実行される可能性があります。 カスタム データ ジェネレーターのインストーラーは必ず信頼された発行元からのみ取得し、信頼されない発行元から受け取ったカスタム データ ジェネレーターのインストール プログラムは実行しないようエンド ユーザーに警告してください。

一般的なタスク

一般的なタスク

関連する参照先

実習を行う: 機能紹介のチュートリアルを実施することで、単純なデータベース単体テストの作成方法と実行方法を理解することができます。

データ生成計画を作成する: 各単体テスト プロジェクトまたは特定のアプリケーション テストのデータ生成計画を作成します。 また、既定ですべての列に指定したデータベースのデータを再使用するデータ生成計画を定義することもできます。

以前のリリースのデータ生成計画をアップグレードする: 以前のリリースの Visual Studio Premium で作成したデータ生成計画を使用できます。 ただし、計画を開いた直後にその計画をアップグレードする必要があります。

生成するテーブルを指定する: すべてのテーブルについて、または指定したテーブルについてデータを生成できます。 テーブルごとに、生成する行数を指定できます。 代替手段として、別のテーブルで生成した行数に基づいた比率で行を生成することもできます。

指定したテーブルの列ごとにデータの生成方法を構成する: 列ごとにデータ ジェネレーター種類を指定します。 また、データ値の範囲について制約を指定することもできます。 より高度なデータ ジェネレーターの場合、構成情報を追加して生成するデータを改善できます。

生成したデータをプレビューする: データベースにデータを書き込む前に、データ生成計画に含まれるすべてのテーブルのデータをプレビューできます。 データをプレビューすることで、データを繰り返し生成することなく、データ生成計画を調整できます。

テスト データを生成する: 生成するデータをプレビューおよび検証すると、データ生成計画を実行してテスト データを生成できます。 また、単体テストを実行するたびにデータが自動生成するように、単体テスト プロジェクトを構成することもできます。

データ生成計画をチェックインする: 単体テストをバージョン管理にチェックインしてチームと共有する場合と同様に、データ生成計画もチェックインする必要があります。

データ ジェネレーターの既定とオプションを変更する: ランダム シードと挿入する行数の既定値を指定できます。 また、データ ジェネレーターの特性を制御するオプションも指定できます。たとえば、プレビュー ウィンドウに表示する行数、個々のテーブルで操作が失敗する前のデータが生成される際に表示できる最大エラー数などです。

問題をトラブルシューティングする: データ生成計画の作成と使用に関する一般的な問題をトラブルシューティングする方法について、さらに詳しく学習できます。

関連するシナリオ