データ ジェネレータを使用してデータベースのテスト データを生成する
Visual Studio Team System Database Edition を使用して、データベース プロジェクト内のデータベース オブジェクトの動作を検証するために必要なテスト データを作成できます。データベースのスキーマに対応しており、本番データとは関係のないデータを生成できます。 この手法は、本番データのプライバシーまたはセキュリティを保護する場合に役立ちます。
特定のテーブルおよび列のデータを生成する方法の詳細を指定するデータ生成計画を定義します。 列ごとに、特定の種類のデータを作成するデータ ジェネレータを指定します。
データベース プロジェクトのデータ生成計画を作成する場合、その計画はプロジェクトのスキーマに基づいたものになります。 データ生成計画を作成した後でスキーマが変更された場合、計画を更新するよう求めるメッセージが表示されます。
重要 : |
---|
スキーマの変更に基づいてデータ生成計画を更新しないと、計画の変更を続行できません。 データ生成計画をいったん閉じて開き直すと、メッセージが再び表示されます。 |
データベース単体テストを実行するときに、テスト プロジェクトごとに異なるデータ生成計画を指定できます。 したがって、テストのグループごとにデータベースを異なる状態に初期化できます。
データ ジェネレータ
Database Edition には、さまざまな種類のデータを生成するための複数のデータ ジェネレータが組み込まれています。 たとえば、整数ジェネレータはランダムな整数値を提供し、文字列ジェネレータはランダムな文字列を提供し、正規表現ジェネレータは指定したパターンに一致する文字列を提供します。標準データ ジェネレータの詳細と一覧については、「標準データ ジェネレータの種類」および「列のデータ生成の詳細の指定」を参照してください。
Database Edition に含まれるジェネレータでは要件を満たすデータが提供されない場合、カスタム ジェネレータを作成できます。 たとえば、データベースが、別の列を参照する CHECK 制約が設定された列を含んでいる場合、カスタム データ ジェネレータを作成する必要が生じることがあります。 詳細については、「カスタム データ ジェネレータで独自のテスト データを生成する」を参照してください。
チーム環境のデータ生成計画
データ生成計画は、データベースのスキーマに関する情報や、指定した各テーブルの列ごとのデータ生成を制御する構成情報を含んだ XML ファイルです。 約 40 個のテーブルを含んだデータベースでも、データ生成計画は 8 MB に達することもあり、行数も 100,000 行を超える場合があります。
.dgen ファイルに対する変更を、Team Foundation バージョン管理 または別のバージョン管理システムを使用して自動的にマージすることはできません。大きな XML ファイルを手作業でマージするために使用するプロセスは困難であるばかりか、ミスを招く可能性も高くなります。 データ生成計画に変更を加える場合は、あらかじめ排他的にチェックアウトしておくと、データ生成計画に関する問題を最小限に抑えることができます。
データ ジェネレータのセキュリティ
データ生成計画とカスタム データ ジェネレータは、チーム環境で共有できます。 共有されたデータ生成ファイルを共有または使用する前に、次のセキュリティ リスクを考慮する必要があります。
データ生成計画に含まれるスキーマ情報
データ生成計画を作成するとき、.dgen ファイルにはテーブルのスキーマが含まれています。これは、業務上の機密情報である可能性があります。 .dgen ファイルを共有すると、ファイルを共有したユーザーはスキーマを参照できます。 データ生成計画は信頼されるソースとのみ共有してください。データ生成計画に含まれる悪意のあるコード
データ生成計画にデータ バインド ジェネレータが含まれる場合、計画の実行時に実行される Transact-SQL (T-SQL) クエリを記述します。 この方法により、データ生成計画の内部から任意の T-SQL を実行できます。 データ生成計画は信頼されるソースからのみ取得し、信頼されないソースから受け取ったデータ生成計画は実行しないようエンド ユーザーに警告してください。接続情報とカスタム データ ジェネレータ
すべてのカスタム データ ジェネレータは、実行時にデータベース接続文字列へアクセスできます。悪意のあるカスタム ジェネレータは、接続文字列の情報を公開する可能性があります。 カスタム データ ジェネレータは信頼されるソースからのみ取得し、信頼されないソースから受け取ったカスタム データ ジェネレータは使用しないようエンド ユーザーに警告してください。カスタム データ ジェネレータに含まれる悪意のあるコード
カスタム データ ジェネレータは、任意のコードを含む可能性のあるクラスです。カスタム データ ジェネレータを使用すると、アクティブ ユーザーと同じアクセス許可で実行されます。 この方法により、悪意のあるコードが FullTrust モードで実行される可能性があります。 カスタム データ ジェネレータは信頼されるソースからのみ取得し、信頼されないソースから受け取ったカスタム データ ジェネレータは使用しないようエンド ユーザーに警告してください。カスタム データ ジェネレータのインストーラに含まれる悪意のあるコード
カスタム データ ジェネレータをインストールする配置プロジェクトを作成できます。配置プロジェクトには任意のコードを含めることができます。 カスタム データ ジェネレータのインストール プログラムを実行する場合、プログラムは高いレベルのアクセス許可を使用して実行されます。 この方法により、高いレベルのアクセス許可で悪意のあるコードが実行される可能性があります。 カスタム データ ジェネレータのインストーラは信頼されるソースからのみ取得し、信頼されないソースから受け取ったカスタム データ ジェネレータのインストール プログラムは使用しないようエンド ユーザーに警告してください。
一般的なタスク
次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。
一般的なタスク |
関連する参照先 |
---|---|
実習を行う : 入門チュートリアルに従って作業すると、簡単なデータベース単体テストを作成して実行する方法を習得できます。 |
|
データ生成計画を作成する : 各単体テスト プロジェクトまたは特定のアプリケーション テストのデータ生成計画を作成します。 |
|
以前のリリースのデータ生成計画をアップグレードする : 以前のリリースの Database Edition で作成したデータ生成計画を使用できます。 ただし、計画を開いた直後にアップグレードする必要があります。 |
|
生成するテーブルを指定する : すべてのテーブル、または指定したテーブルのみのデータを生成できます。 テーブルごとに、生成する行数を指定できます。 別のテーブルに対して生成する行数に基づいた割合で行を生成することもできます。 |
|
指定したテーブル内の列ごとにデータの生成方法を設定する : 各列のデータ ジェネレータの種類を指定します。 データ値の範囲で制約を指定することもできます。 高度なデータ ジェネレータの場合、追加の構成情報を指定して、生成するデータを絞り込むこともできます。 |
|
生成されたデータをプレビューする : データをデータベースに書き込む前に、データ生成計画に含まれる任意のテーブルのデータをプレビューできます。 データをプレビューすることで、データを繰り返し生成しなくてもデータ生成計画を調整できます。 |
|
テスト データを生成する : 生成するデータをプレビューして確認した後、データ生成計画を実行してテスト データを生成できます。 単体テストを実行するとデータが自動的に生成されるように、単体テスト プロジェクトを構成することもできます。 |
|
データ生成計画をチェックインする : 単体テストを共有するためにバージョン管理にチェックインする必要があるのと同様に、データ生成計画もチェックインする必要があります。 |
|
問題をトラブルシューティングする : データベース単体テストの作成および実行に関する一般的な問題をトラブルシューティングする方法についてさらに詳しく学習できます。 |
関連するシナリオ
データベース単体テストの作成および定義
データベース オブジェクトの動作を検証するための単体テストを定義する方法に関する情報およびその他のトピックへのリンクを提供します。 各テスト プロジェクトを別のデータ生成計画、配置構成、および接続文字列に関連付けることができます。データベースの単体テストを実行する
データベース単体テストを作成した後、テストを実行して結果を確認する方法について説明します。データベース単体テストのカスタム条件の定義
既定のテスト条件を使用して検証できない特別な条件をテストする方法について説明します。