Visual Studio 2005 Team System : よりよいテストによる、より良いソフトウェア開発
Visual Studio Team System
Microsoft Corporation
May 2004
日本語版最終更新日 2004 年 7 月 6 日
適用対象
Microsoft Visual Studio 2005 Team System
概要 : この記事では、Visual Studio 2005 Team System にて提供される、ソフトウェアのテスト機能について説明します。
メモ このドキュメントは製品のリリースに先立って制作されているため、実際に出荷される製品にこのドキュメントの内容が正確に反映されるとは限りません。このドキュメントの情報は、このドキュメントの公開時点の製品について書かれたものであり、計画以外の目的で利用できるものではありません。また、このドキュメントの情報は、予告なしに変更される可能性があります。
目次
はじめに
品質保証の問題
Visual Studio 2005 Team Test のソリューション
拡張の可能性
まとめ
はじめに
Visual Studio 2005 Team Test は、ソフトウェア開発におけるテスト のための機能を提供いたします。提供される機能は、Microsoft 社内で使用されていた機能をベースとしており、今回 Visual Studio 2005 Team Test に組み込まれ、初めて外部に公開されることになります。
これらの新しい機能は Visual Studio に緊密に統合されているため、「テスト」の枠組みの中だけで使用するだけでなく、ソフトウェア開発ライフサイクル全体のソリューションを提供する、より大きな枠組みの中で使用できます。
品質保証の問題
アプリケーションや Web ページでは、厳しいテストを経てようやく品質やパフォーマンスの目標が達成されます。これまでの Microsoft Visual Studio は、ソフトウェア開発者のサポートに真っ向から取り組んだ製品となっていたために、開発におけるテストの側面のサポートは軽微なものにとどまっていました。このため、組織の品質保証グループで働くテスト エンジニアの目には、リリースされるソフトウェアの品質を高めるためのテストの作業にはあまり役に立たない製品として映っていたことと思われます。
開発者やテスタが Visual Studio でテスト用のコードを記述しても、特殊なテストを作成したりテストを管理したりするには、Microsoft の他の製品を使用するか、サードパーティ製のツールを購入するか、またはツールをゼロから作成しなければなりませんでした。データのモデリングや発行、サポート ドキュメントの準備、バグの追跡、ビルド確認テスト (BVT) などのテスト スイートの作成が必要な場合には、作業はさらに複雑になります。結果としてさまざまなツールやストレージ機構が使用されるため、ほとんどの場合、テストの結果などがそれらの間で連携されませんでした。
金融分野のある企業の IT グループでは、開発ライフサイクルの各フェーズでそれぞれまったく異なる種類のテスト ツールが使用されていて、それがかなりの数になっていました。それらのツールは、それぞれ別の企業が提供している別の実行ファイルだったため、ツール間の連携はほとんど不可能で、ツールを利用するユーザー間の連携にも足かせとなっていました。たとえば、あるツールで入力したプロジェクトの要件を別のツールにコピーしても、両ツールのデータベース間で要件を結ぶリンクが確立されないため、一方のツールで要件を変更しても、開発チームやテスト チームが使用しているもう一方のツールのデータは更新されないままでした。
Visual Studio 2005 Team Test のソリューション
Visual Studio 2005 Team Test では、ソフトウェアのテストのためのツールがソフトウェアの開発のためのツールのレベルに近づいています。その最も顕著な例は、Visual Studio の統合開発環境 (IDE) を使用してテストを作成したり実行したりできるようになったことです。
コード カバレッジの測定のほか、単体テスト、Web テスト、負荷テスト、マニュアル テストなど数多くの基本的なテストのタイプが、今回 Visual Studio に統合されました。実際、Visual Studio 2005 Team Test には、新しいプロジェクトの種類として "テスト" プロジェクトが導入されています。このプロジェクトの種類は、従来のプロジェクトの種類と一緒にソリューション エクスプローラに表示されます。
新しいテスト ツールは、Visual Studio 2005 Team System のその他の部分とも統合されています。このためソフトウェア テスタは、テスト結果をデータベースに発行する、傾向や履歴のレポートを生成する、異なる種類のデータを比較する、テストの結果発見されたバグの数や種類を調べる、再現のためのテストにリンクされていないバグを特定する、などの作業を行うこともできます。
サポートされているテストの種類
Visual Studio 2005 Team Test では、次のようなテストの種類をサポートしています。
-
プロジェクトの関数やメソッドを実行するコードから成る単体テスト。既存のソース コードをテストするために使用される単体テストは、テスト主導な開発では不可欠な要素です。次のサンプルは、生成された直後の単体テストを表しています。この単純なテスト ケースは、テストするコードの中の 1 つのメソッドを対象としています。生成されたテスト コードを編集して動作をカスタマイズできます (Unit Test Framework ライブラリのメソッドを呼び出すこともできます)。
<TestMethod()> Public Sub OrderStatusCodesTest() Dim target As AdventureWorks.AdventureValues = New AdventureWorks.AdventureValues ' TODO: プロパティに適切な値を割り当ててください Dim val As System.Data.SqlClient.SqlDataReader Assert.AreEqual(val, target.OrderStatusCodes) Assert.Inconclusive("Look at this code and make sure it does what you want") End Sub -
ブラウザ セッションから作成 (記録) できる一連の HTTP URL から成る Web テスト。
-
チームの既存の自動テストやツールを使用できる汎用テスト。
-
自動テストを実行して複数のユーザーをシミュレートする負荷テスト。
-
自動化されていないタスクをステップごとに実行するマニュアル テスト。
自動テスト (マニュアル テスト以外のすべてのテスト) はコマンド ラインから実行できます。テストを個別に実行することも、テストのグループを実行することもできます。
#Visual Studio 内のツールの統合
Visual Studio 2005 Team Test の新機能は、以下の UI 要素によって実現されています。
[Test View] ウィンドウ : テストの作成
[Test View] ウィンドウは、テストの編集 (作成) のためのナビゲーション機能を提供します。たとえば、テストの対象となるプロジェクトのコード (Code Under Test、または CUT とも呼ばれます) を実行する単体テストのコードを記述するには、Visual Studio の IDE を使用します。単体テストの作成が完了すると、そのテストは [Test View] ウィンドウに表示されます。その後、その単体テストをダブルクリック (または右クリックしてから [編集] をクリック) して開くと、Visual Studio IDE が開き、そのテストをまた編集できるようになります。同様に、マニュアル テストを開くとマニュアル テスト用のエディタが開き、負荷テストや Web テストを開くとそれぞれのカスタム エディタが開きます。
図 1 : [Test View] ウィンドウ
テストを作成する際には、記述したコードが予想どおりに機能するかどうかを確認する作業も必要になります。テストを実行するためのメインのウィンドウは別にありますが (次の [Test Explorer] ウィンドウのセクションを参照)、[Test View] ウィンドウでもテストを実行できます。テストを実行して、その結果に基づいて編集や微調整を加えるには、この方が簡単です。
[Test Explorer] ウィンドウ : テストの管理と実行
[Test Explorer] ウィンドウでは、個々のテストを "カテゴリ" に入れて管理できます。たとえば、1000 個あるテストのうちの 50 個は、新しいビルドができるたびに実行する必要がある重要なテストだったとします。この場合は、"BVT" (Build Verification Test (ビルド確認テスト)) という新しいカテゴリを作成して、その 50 個のテストをそこに入れます。そして BVT カテゴリを実行すれば、50 個すべてのテストを同時に実行できます。
図 2 : [Test Explorer] ウィンドウ
[Test Explorer] ウィンドウでは、所有者やテストの種類などを指定して、表示するテストにフィルタをかけることもできます。これにより、テストの実行や管理、作業項目としての割り当てなどを行う際に、目的のテストを見つけやすくなります。
いったん [Test Explorer] ウィンドウでカテゴリを整理すると、コマンド ラインのテスト ユーティリティを使ってカテゴリ内のテストをすべて実行できるようになります (アセンブリ内のテストをすべて実行することもできます)。
[Run Configuration] ダイアログ ボックス : テストの実行の構成
[Run Configuration] ダイアログ ボックスを使用すると、テストの実行方法を厳密に定義できます。このダイアログ ボックスでは、テストの種類ごとに個別のページが用意されています。つまり、異なる種類のテスト (単体テスト、Web テストなど) を同時に実行する場合に、タブをクリックしてそれぞれのページで設定を行えます。これにより、1 回のテストで実行するすべての異なる種類のテストに対して、テストを開始する前にそれぞれ別の設定を適用できます。
図 3 : [Run Configuration] ダイアログ ボックス
[Run Configuration] ダイアログ ボックスでは、たとえば次のような設定を行うことができます。
-
テストをローカルで実行するかそれとも配置した状態で実行するかを設定します。"配置した状態" で実行する場合は、テストが複数のリモート コンピュータで実行されます。
-
テストの実行でコード カバレッジを有効にするかどうかを設定します。これにより、たとえば、コード カバレッジの計算に含めるバイナリを選択できます。
-
1 回のテスト実行に含まれる、異なるテストの種類に対する個別設定を行います。
いったんテストをカテゴリに整理すると、そのカテゴリのテストを [Test Explorer] ウィンドウまたは [Test View] ウィンドウから実行できるようになります。個々のテストを同じウィンドウから実行できます。テストの実行を開始すると、[Run Configuration] ダイアログ ボックスが表示されます。ここで選択する設定によって、テストの実行方法が決まります。[Run Configuration] ダイアログ ボックスで [OK] をクリックすると、テストが実行されます。テストが完了すると、結果が [Test Results] ウィンドウに表示されます。
テスト実行時の構成を保存しておくと、後にテストやテストのカテゴリを実行する際にその構成を再利用できます。実行の構成は、Visual Studio IDE からでもコマンド ラインのテスト ユーティリティからでも保存できます。
[Test Results] ウィンドウ : 状態および結果の表示
[Test Results] ウィンドウには、テストの実行に含まれるすべてのテストの現在の状態を示す、Pending (開始前の状態)、Running、Passed、または Failed が表示されます。負荷テストの実行が完了したときには、"Completed" という状態がウィンドウに表示されます。
たとえば、マニュアル テストはリモート サーバーに配置されず、ローカルで実行されます。マニュアル テストを含むテストの実行を開始すると、[Test Results] ウィンドウに表示されるマニュアル テストの状態は "Pending" になります。この状態は、マニュアル テストを実行するテスタが [Test Results] ウィンドウでマニュアル テストをクリックするまで変わりません。マニュアル テストをクリックすると、実行する必要があるステップの一覧が表示されます。マニュアル テストの実行が完了したら、テスタは、テストの成功または失敗を示すボタンをクリックします。
図 4 : [Test Results] ウィンドウ
自動的に実行されるテスト (マニュアル テスト以外のすべての種類のテスト) の場合、[Test Results] ウィンドウには、"Pending" から始まり最終結果に至るテストの進行状況が表示されます。最終結果は、"Passed" または "Failed" のどちらかの状態になります。この 2 つの状態には、さまざまな警告を関連付けることができます。テスト結果が表示された後、結果の行をダブルクリックすると、テスト結果の "詳細ビュー" が表示されます。このウィンドウには、高レベルの概要、警告、テストの実行中に呼び出されたメソッド、およびその他の要素 (バイナリの実装やリモート サーバーへのテストの配置の失敗など) が表示されます。
[Code Coverage] ウィンドウ : テストの実行によって達成されたカバレッジの表示
テストの実行の [Run Configuration] ダイアログ ボックスでコード カバレッジを有効にすると、テストの実行の間に実行されたソース コード モジュールが [Code Coverage] ウィンドウに表示されます。このウィンドウには、ソース コードのファイル、名前空間、クラス、およびメソッドの名前と、そのテストの実行によって達成されたカバレッジ率が表示されます (たとえば、IF ステートメントのみが実行されて ELSE ステートメントが実行されなかった場合には、そのメソッドのカバレッジ率は 80% などになります)。
図 5 : [Code Coverage] ウィンドウ ( 結果をファイル別に表示 )
また、カバーされなかったコードは、カバーされたコードとは別の色で表示されます。カバーされなかったコードをダブルクリックすると、コード エディタが開き、問題のコードの場所までスクロールします (また、[Code Coverage] ウィンドウのボタンをクリックすると、ソース ファイルのカラーコーディングのキーが表示されます)。
図 6 : [Code Coverage] ウィンドウ ( カバーされたコードとカバーされていないコードを色分けして表示 )
拡張の可能性
Visual Studio 2005 Team Test に含まれるインフラストラクチャは、2 つのレベルの拡張に対応しています。一方は個々のテスタを対象としており、もう一方は、Visual Studio を拡張する必要がある人々を対象としています。
-
汎用テスト。 汎用テストを使用すると、任意のコマンドをテストとして実行できます。このメカニズムによって、これまでに使用していたテストを引き続き実行できるようになります。汎用テストは Visual Studio に緊密に統合されているため、[Test Explorer] での選択、カテゴリ分け、および実行が可能なほか、結果も [Test Results] ウィンドウに表示されます。また、汎用テストは Team System のその他のツールにも緊密に統合されているため、失敗からバグを作成したり、テスト結果をアーカイブしたりすることもできます。
-
テストの種類のアドイン。 VSIP 開発者は、Visual Studio Team System にカスタムのテストの種類をプラグインすることでテスト システムを拡張できます。この場合、テストの種類の作成者は、Visual Studio のユーザーがカスタム テストに変更 (テストの実行方法やテスト結果の表示方法など) を加える際に使用するエディタを完全に制御できます。新しいテストの種類は、[Test View]、[Test Explorer]、[Test Results] などの既存のウィンドウに完全に統合されます。さらに、コード カバレッジの収集、負荷テスト、テスト結果の永続化や格納などに統合することもできます。
個人の開発者やパートナーによる Visual Studio 2005 の機能の拡張の詳細については、「Visual Studio 2005 Team System : Extending the Suite (英語)」を参照してください。
まとめ
Visual Studio では、テストは最も重要な活動の 1 つとして位置付けられるようになりました。テストは、複雑な Web アプリケーションやデスクトップ アプリケーションの開発に固有のリスクを軽減したり、サポート コストを削減して収益率を最大限に高めたりするために必要な活動として、包括的なソフトウェア開発ライフサイクルに統合されています。Visual Studio 2005 Team Test は、製品開発ライフサイクル全体にわたって一連の統合されたツールを提供します。
たとえば、Visual Studio 2005 Team Test では、ソフトウェアをテストするためのツールが、ソフトウェアを構築するためのツールと共に新たに Visual Studio IDE に統合されています。しかし、ソフトウェア開発ライフサイクルには、このほかにもさまざまな側面があります。Visual Studio 2005 Team Test には、静的および動的な分析によってコードの堅牢性や即応性を高めるためのツールや、ソフトウェア開発ライフサイクルのすべてのフェーズで使用されるツール (作業項目の追跡、エンタープライズ規模のソース コード管理、スケジュール管理、プロジェクト管理など) も統合されています。
Visual Studio Team System の詳細については、以下のトピックを参照してください。