VS 2010 Premium 以上 / VSTS 2008 Database Edition 以上の機能を使ってテスト用データの生成 (前編)

マイクロソフトが提供するアプリケーション サーバーは、今や全てが SQL Server をバックエンドに持っています。
System Management Server (SMS) や System Center Configuration Manager (SCCM) も、それに違いはありません。

現在、僕の検証環境として構築している SCCM 2007 は、SQL Server 2005 SP2 を利用しています。

 

SCCM が保持するデータを利用したテストを行うと言うのは、資産管理をする個別のアプリケーション (インターフェースとして) を作った場合に最適かも知れません。
なぜなら SCCM は資産管理サーバーとして社内資産の莫大なデータを保持しています。
それらのデータを受け入れることができるかの負荷テストを実施したり、想定している通りのデータの表示がされるかなど、良いテストが実施できるのではないでしょうか。

 

<開発用途に利用するデータベース内のデータ>

一つのやり方としては、本番環境のデータベースをバックアップして、開発環境にリストアした上で、そのデータを活用することができますね。
ただし、SCCM のように個人データから社内の資産データを保持しているサーバーの情報ですから、本番データを利用するのは難しいですよね。
また、本番のデータがデータ量として不充分だったら、どうしましょう・・・

当然ながら、テスト用のデータを一つずつ作っていくこともできます。
より確実といえばそうかも知れませんが、とにかく時間がかかる・・・そしてヒューマン エラーとして、Database のスキーマに合わない形のデータを生成してしまう可能性も充分ありますよね。

じゃ、どうすれば良いの?

 

<Visual Studio 2010 Premium / Visual Studio Team System 2008 Database Edition>
Visual Studio 2005 Team Editions for Database Professionals からの機能として、Visual Studio ではデータベース開発を支援してきました。
当初から Database のスキーマに合った形でのテスト データを生成する機能と言うものが含まれており、今では製品として統合された Visual Studio 2010 Premium や Visual Studio 2010 Ultimate の機能として含まれています。

データ ジェネレータの利点
言うまでもなく、自動生成データの良さは、本番環境のデータをいじらない + 使わないと言う点と、手動でテスト用データを作成する必要がないと言うことです。
意外と当たり前なことですが、それでも本番環境のデータを流用してデータベースのテストを行うことなど、ありませんか?
最近では稀ですが、テスト用に本番データを使おうとして、結果顧客情報が流出してしまったなどと言うことは過去にもニュースで見ることはありましたよね?

管理環境に依存はしますが、SCCM が保持するデータ量は、当然ながら莫大なものです。
その分、データベースの構成もかなり複雑です → SMS のデータベースと大まかな構成は変わりませんが、新しいテーブルやリレーションが当然ながらあります。

データベースのプロジェクトを構築するにあたって以下のスライドの事実が大事だと思います。

Visual Studio 2010  Team Foundation Server 2010  DB Dev functionality (04.16.2010.NEC)_054
本番のデータベースは、「持つべきデータ」を保持し、厳守する。
データベースのスキーマは、バージョン管理され、Visual Studio ならびに Team Foundation Server で保持し、厳守する。
スキーマは、本番環境に対して適用するものであり、開発環境において最新のスキーマを必ず持っている。
本番環境は拡張されたり、モデルを変わるなりはするが、保持しているデータは絶対。

 

今回、僕がたまたま依頼を受けた件では、SCCM が保持するデータを変更したりしないことは当然のこと・・・
だが、SCCM のデータベースのスキーマを利用してテスト用のデータを大量に生成すると言うこと。
上のスライドの事実を考えると、開発環境内で全てを実行できるんです。

 

で、ここまで書いたのはイイんですが、実作業の内容はチョット見せれないので、違う DB を利用して後日手順を紹介しまーーーす。

 

中途半端な終わり方・・・

 

皆さん、GW は楽しみましたか~~~~ ???
僕は、すこぉぉぉぉぉぉしだけお仕事して、残りの時間はゆったりと過ごしました♪