BOOK Preview
|
|
|
本コーナーは、.NET関連の新刊書籍から主要なチャプターをそのまま転載し、その内容を紹介するものです。 今回は日経BPソフトプレス/マイクロソフトプレスより2007年4月2日発行の書籍『Microsoft Visual Studio 2005によるWebアプリケーションテスト技法−Visual Studio テスト ツールを用いた業務アプリケーションの実践的テスト手法』より、同社の許可を得てその内容を転載しています。 本書は、大規模Webアプリケーション構築の実践的テクニックを網羅した『.NETエンタープライズWebアプリケーション 開発技術大全』シリーズ全5巻、そして、Visual Studio 2005(ASP.NET 2.0)の新機能を活用したアプリケーション設計についてまとめた『Microsoft Visual Studio 2005によるWebアプリケーション構築技法』の著者であるマイクロソフトのコンサルタント赤間氏による新刊書籍です。既刊の書籍はいずれも開発者のバイブル的な存在になっています。 本書では、Visual Studio 2005 Team Systemに搭載されているテスト機能を活用して、単体、結合、性能テストを行うための実践的な手順について解説されています。システムが大規模/複雑になってくると、テストを漏れなく効率的に行うにはツールの活用とツボを押さえたテストが重要になってきますが、本書は.NETのアプリケーション開発において、その2点を確実にカバーするものです(テストの対象はWebアプリケーションとなっていますが、本書のテスト技法の大半は、ほかの.NETアプリケーションにもそのまま適用することができるはずです)。 また、チームによる開発/テストを前提としており、Team Systemを使って各チームが効果的に連携するためのポイントにも重点が置かれています。 本稿は、同書「第4章 開発チームによる単体機能テストの開発」の「4.3 データアクセスクラスに対する単体機能テスト」からの転載です。 この第4章は、Visual Studio 2005 Team Edition for Software DevelopersやVisual Studio 2005 Team Edition for Software Testersに搭載されている単体テスト機能を利用したテスト技法についての解説です(本稿のサンプル・コードに登場するTestMethod属性やAssertクラスは、Visual Studio 2005 Team Editionの単体テスト機能で提供されるテスト・フレームワークに含まれる機能です。これらについては「連載:VSTSの単体テスト機能は本当に使えるのか?」も参考にしてください)。 一口に単体テストといっても、テスト対象となるコンポーネント(ビジネスロジック・コンポーネントやデータアクセス・コンポーネントなど)によって、その手法や考え方、テストコードの書き方は異なってきます。本章ではコンポーネントごとに、具体的な形でそれらが解説されています。 なお、書籍の詳細については書籍情報のページをご覧ください。 |
データアクセスクラス(DAC)をテストするためには、テストコードに加えてテスト用のデータベースを準備する必要がある(図4-21)。 |
図 4-21 データアクセスクラスをテストする際に利用するデータベース |
このため、データアクセスクラスのテストにおいては以下の2つのポイントを理解する必要がある。
- テスト用データベースの準備方法
- テストコードの記述方法
これらについて解説する。
4.3.1 テスト用データベースの準備方法
Visual Studio 2005とSQL Server 2005を利用したアプリケーション開発では、開発用データベースとしてファイルアタッチデータベース機能*93を活用するのが便利である。この機能は、開発時のみならずテスト時に多大な威力を発揮する。
*93 ファイルアタッチデータベース機能の詳細については、『Microsoft Visual Studio 2005によるWebアプリケーション構築技法』の「第7章 ADO.NETによるデータアクセス」の項を参照のこと。本機能はVisual Studio 2005によるデータベースアプリケーション開発における極めて重要な機能なので、必ず理解していただきたい。 |
一般的に、データアクセスクラスのテストを行う場合には、テスト用データベースのセットアップ作業やテスト用データの準備作業、あるいは終了時のテスト用データ除去作業などが必要になる。しかし、ファイルアタッチデータベース機能を活用すれば、以下のようなことが可能になる。
- テスト用データを最初から内部に持たせた形でデータベースファイルを用意しておくことができる。
- 万が一テスト時にデータを破損しても、データベースファイルを上書きコピーすれば元の状態に簡単に戻せる。
具体的には、以下の作業を行う。
A.テスト用データベースファイルの配置
まず、開発とテストに利用するファイルアタッチ用データベースファイル(.mdfファイル)を用意する。開発用に利用するデータベースにはスキーマのみを入れることも多いが、テスト用に利用するデータも含めた形でデータベースファイルを準備するのがコツである。
そして、テスト用データを含んだファイルアタッチ用データベースファイルを、ビジネスロジックプロジェクト内に配置する(図4-22)。このファイルアタッチ用データベースファイルは、以下の2つの目的に利用される*94。
- データコンポーネント機能(.xsdファイル)を活用したDACとBECの開発*95
- 単体機能テストを行う際のテスト用データベース
図 4-22 テスト用データベースファイルの配置とDACおよびBECの開発 |
*94 実際にはこの2つに加えて、開発者が開発環境上でCtrl + F5キーにより動作確認する場合にも利用される。この目的のために、ビジネスロジックプロジェクトにはビルドアクションを追加する。詳細については、「4.4 ビジネスロジッククラスに対する単体機能テスト」にて解説する。 |
*95 本機能の詳細については、『Microsoft Visual Studio 2005によるWebアプリケーション構築技法』の「第7章 ADO.NETによるデータアクセス」を参照のこと。本機能もファイルアタッチデータベース機能と並ぶ極めて重要な機能なため、ぜひよく理解していただきたい。 |
もちろん、ビジネスロジックプロジェクト内にデータベースファイルを配置しただけでは、テスト時にうまく利用することができない。さらに構成設定ファイルの追加とファイル配置設定を行う。
B. テスト用構成設定ファイルの追加
実際のテスト時に利用される構成設定ファイル(app.configファイル)は、テストプロジェクト側のものである。よって、テストプロジェクト側にapp.configファイルを追加し、ビジネスロジックプロジェクト側に書かれている構成設定の内容を適宜コピー&ペーストしておく(図4-23、リスト4-9)*96。
*96 なお、構成設定ファイル内では|DataDirectory|マクロが利用されているが、この文字列は実行時に実行フォルダ名に置換されて動作する。このため、テスト実行時にはこの文字列はTestResults下の実行フォルダ名に変換されることになる。 |
C. テスト用データベースファイルの配置設定
さらに、localtestrun.testrunconfigファイルの配置タブを開き、ビジネスロジックプロジェクト内のファイルアタッチ用データベースファイルをTestResultsフォルダにコピーするように設定する(図4-23)。
図 4-23 テスト用構成設定ファイルの追加とテスト用データベースファイルの配置設定 |
|
||
リスト 4-9 テストプロジェクト側に追加される構成設定ファイルの中身 |
以上で、開発とテストに利用するデータベースに関する準備が整う。あとは開発されたデータアクセスクラスやビジネスエンティティコンポーネントに対してテストコードを記述するのみである。
INDEX | ||
Microsoft Visual Studio 2005によるWebアプリケーションテスト技法 | ||
第4章 4.3 データアクセスクラスに対する単体機能テスト | ||
1. テスト用データベースの準備方法 | ||
2. テストコードの記述方法 | ||
3. テストの初期化処理と終了処理 | ||
「BOOK Preview」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|