単体テストによるデータベースの検証
データベースの単体テストは、データベースのストアドプロシージャ、関数、トリガの単体テストを作成および実行する機能です。これは、Visual Studio Team Edition for Software Developers(およびSoftware Testers)が持っているC#やVB.NETで作成したメソッドの単体テストを作成および実行する機能と似たような機能を提供します(VSTDの単体テスト機能については、本シリーズの第3回「単体テストからパフォーマンス分析まで、VSTDでシステム開発を自動化しよう」をご覧ください)。
通常、ストアドプロシージャなどのテストを行う場合には、VSTDの単体テストのような機能を利用して、コネクションを設定し、ストアドプロシージャを実行し、結果を検証する単体テストメソッドをC#などで作成して実行しますが、VSDPの単体テスト機能を利用することでこの手間を軽減することができます。実際に、AdventureWorksデータベースに含まれるストアドプロシージャに対してデータベース単体テストを生成した画面が次の図8です。
図8のようにストアドプロシージャなどを実行するためのSQL文、およびその実行結果を確認するための条件を設定した単体テストが作成されます。この単体テストもVisual Studioのテストプロジェクトの1つとして作成されるため、通常の単体テスト同様に、テストビューやテストマネージャを利用してテストの管理を行ったり、実行したりといったことが可能です(図9)。
図9は実際にテストビューやテストマネージャにデータベース単体テストが表示され、さらに実行するとVSTDの単体テスト同様にテスト結果ウィンドウにテスト中やテスト後の状態が表示されていることを示しています。
データベースのリファクタリング
Visual StudioでC#を使用している場合、さまざまなリファクタリング機能がサポートされています。Visual Basicの場合でも名前の変更がサポートされています。データベースのリファクタリングは、データベース内のさまざまなオブジェクトに対して、Visual Basicにあるような名前の変更リファクタリングを行う機能です。実際にあるテーブルの列を選択し、名前の変更を実施して、変更前プレビューを確認すると次の図10のようになります。
図10のように名前の変更を行おうとした際に、同一データベースプロジェクト内に含まれるストアドプロシージャやリレーションがあるテーブルの影響する場所を確認しながら、すべてに変更を適用することができます。従来はデータベースの名前変更はほとんどが手作業などにより行われていましたが、この機能によって大きく効率をあげることができると思います。
しかし、このリファクタリング機能はソリューション内にあるアプリケーション開発用プロジェクトなどとは関連付けることができないため、アプリケーション内に直接埋め込まれたSQL文などは依然として検索と置換などによって修正する必要があります。このため、VSDPを利用してデータベースに関するものを効率よく管理、開発するためには、アプリケーションにSQLを埋め込むよりもストアドプロシージャを利用した方が、より効果的であるとも言えます。
まとめ
今回はVSDPがもつデータベース開発のためのさまざまな機能についてみてきました。これらの機能について簡単にポイントをまとめておきます。
- データベースの作成と編集
- データベーススキーマを新規に作成することも既存のデータベースからインポートして生成することもできる
- 標準ではSQL Server 2000およびSQL Server 2005にしか対応しない
- 作成したスキーマはSQL Serverに配置できる
- データジェネレータによるデータの生成
- スキーマに合わせてデータを生成できる
- 正規表現ジェネレータでデータをある程度制限可能
- 業務上整合性をもったデータはデータバインドジェネレータで生成可能
- データベースの比較
- データベーススキーマの比較とデータそのものの比較が可能
- 比較結果からターゲットを更新することが可能
- 単体テストによるデータベースの検証
- ストアドプロシージャ、関数、トリガの単体テストを作成、実行可能
- 作成したテストは、テストビュー、テストマネージャで管理可能
- データベースのリファクタリング
- 名前の変更のみをサポート
- データベースプロジェクト内の依存関係のみを修正可能
VSDPは、さまざまな機能が既存のデータベースありきの方が利用しやすかったり、そうでなければ機能そのものの利用価値がなかったりするケースがあり、運用データベースの変更に焦点を当てて語られることが多い製品です。しかし、データベースの開発は開発プロジェクトの初期の段階から始まり、運用後も変更や修正が発生するものだと思います(本来はあまりよくありませんが)。VSDPを利用することで開発の初期から継続的に変更を追跡できるため、むしろそのような利用の方がよいのではないかと思います。
また、データベーススキーマとデータ生成計画を使うことで、個々の開発者が単体テストを行う際に、全員が簡単に自分の端末などの閉じた世界で、同じスキーマとデータのデータベースを利用してテストを行うといった利用方法も考えられます。更に、データベーススキーマの構成管理やデータベースの単体テストを次の回で紹介するVisual Studio 2005 Team Foundation Serverと組み合わせることで変更の追跡やストアドプロシージャのバグトラッキングなどを行うこともできるようになります。このように、VSTSの枠組みの中でVSDPを利用することでさまざまなことが行えると思います。今回は、VSDPが持つデータベース開発のための機能の概要を紹介しましたが、これらが導入のための検討材料になればと思います。
次回は、VSTSのサーバ製品であるVisual Studio 2005 Team Foundation Serverについて、構成管理やビルド、作業項目管理などの機能を紹介します。