連載:VSTSの単体テスト機能は本当に使えるのか?

第1回 Team Systemのテスト機能の実際

太陽システム株式会社 中西 庸文
Microsoft MVP 2006 - Solutions Architect)
2006/08/09
Page1 Page2 Page3 Page4

4. 新しいテストの自動生成

 コード・カバレッジを計測した結果として、カバー(実行)されていないコードは、新しいテスト・ケースの候補となる場合が多い。そのような場合は、カバーされていないコードから単体テストを自動生成してもよいだろう。

 VS 2005では、次の画面のように、単体テストの作成ダイアログを表示し、[出力プロジェクト]で(先ほど作成した)テスト・プロジェクトを選択すれば、適切なテスト・クラスにテスト・メソッドを追加してくれる。

単体テストの自動生成
コード・カバレッジでカバーされていないことが判明したコードは、単体テストを新たに作成することでカバーされるようにしてもよい。

 本稿では、自動生成された単体テストを修正して2つの新しいテスト・メソッドを作成し、テストが失敗することを確認した後で、テスト対象クラスのメソッドを正しく実装した。この状態でコード・カバレッジを実行した結果は100%である。これにより、すべてのテストが成功し、すべてのコードが実行されたことが保証されたわけだ。

 次の2つの画面は、すべてのテストが成功した結果とすべてのコードがカバーされたカバレッジ結果の例だ。

すべてのテストが成功
[テスト結果]ウィンドウに表示されるすべての結果は「成功」になっている。
 
すべてのコードが実行された(カバレッジ率=100%)
[コード カバレッジの結果]ウィンドウに表示されるすべてのカバー率は「100.00%」になっている。

 ここまで、VSTSのコード・テスト・ツールを使用した単体テストの実行方法およびコード・カバレッジの実行方法を簡単に説明した。

 VSTSの単体テストの実行方法は、今回説明したもの以外にも、メニュー・バーの[テスト]−[ウィンドウ]から[テスト・ビュー]を選択することで表示されるテスト・ビュー・ウィンドウから実行する方法など、複数の方法が存在する。テストの実行方法が複数あるのは混乱の原因にもなるので、いろいろと試してみて使いやすい方法を選択してほしい。

TE for Tester特有のテスト・ツール

 TE for Testerには、単体テストやコード・カバレッジ以外にも特定のソフトウェア・テストを目的として使用できるさまざまなテストが用意されている。これらのテストは、VS 2005のテスト・プロジェクトで、メニュー・バーから[テスト]−[新しいテスト]を選択することによって追加できる。

 以下の表でTE for Tester特有のテスト・ツールについて簡単に説明する。

テストの種類 説明
汎用テスト 汎用テストは、以前に作成されたテストやほかの外部ツールをVS 2005でテストとして動作するように、それらをラップして作成するテストである。これによって、次のような既存のテスト・インフラストラクチャを活用できる
・既存のプログラム
・レガシー・テスト
・テスト・ツール
・自動化されたテスト
ロード・テスト ロード・テストでは、単体テスト、汎用テスト、順序指定テスト、Webテストなど手動テスト以外のテストをカプセル化し、仮想ユーザーを使用することで、多数のユーザーによるサーバへの同時アクセスをシミュレートする。ロード・テストは、ロード・テスト・ウィザードを使用して作成する
手動テスト 手動テストは、自動化が困難であるか不可能であるテストの手順が示されたテキスト文書またはMicrosoft Word文書である。これはTE for Testerのテスト・ツールで唯一自動化されていない形式のテストである。手動テストにはテストの目的や、テスト担当者が従うべき一連の手順リストが含まれる
順序指定テスト 順序指定テストは、単体テスト、汎用テスト、手動テスト、順序指定テスト、Webテストなどロード・テスト以外のテストを保持するコンテナである。順序指定テストでは、複数のテストを任意の順序に組み合わせて1つのテストとして実行することで、特定の実行順序での動作が保証される
Webテスト Webテストは、Webアプリケーションの機能をテストするためのものであり、ブラウザのセッションとして記録された一連のHTTP要求で構成される。Webテストは、Webサイトに要求した手順(通信)を記録することで作成できる。記録後にそれぞれのステップにおいて、待ち時間などのプロパティ、Webサーバにポストするデータを保存するデータ・ソースなどが編集可能である。また、Webテスト・エディタを使用して、手動でWebテストをビルドすることもできる
TE for Tester特有のテスト・ツール

 これらのテスト・ツールの詳細については、MSDNライブラリのVisual Studio Team System テストの種類を参考にされたい。

まとめ

 今回は、TE for DeveloperとTE for Testerに共通のVSTSのコード・テスト・ツール(=単体テストとコード・カバレッジ)の使用方法を、テスト駆動(完全なテスト・ファーストではなかったが)で開発を行う例を通して解説し、最後にTE for Tester特有のテスト・ツールについて簡単に説明した。

 VSTSの単体テストには強力なコード自動生成機能があり(今回は紹介できなかったが、テスト・コードからメソッド・スタブを生成する機能やコードのリファクタリング機能もある)、これをうまく利用することでテスト駆動開発での作業効率を高めることが可能である。ここで、テスト駆動開発以外のアジャイル開発のプラクティスの実践(例えば「バージョン管理」「単体テスト」「自動化」など)が気になるところだが、これについては次回説明しよう。

 次回では、まずアジャイル開発のベスト・プラクティスとプラクティスのVSTSでの実践について解説し、さらにオープン・ソースの単体テスト・ツールであるNUnitとの比較やNUnitからの移行のガイドなども含めながら具体的に説明していく予定である。End of Article


中西 庸文
1998年 太陽システム株式会社入社。Microsoft MVP for Visual Developer - Solutions Architect。.NETでのアジャイル開発の促進活動に従事。現在はVS 2005におけるアジャイル開発のベスト・プラクティスを模索中。

Blog(http://d.hatena.ne.jp/NAgiler/
VB&C#デザインパターンINETA Japan 加盟コミュニティ)を運営中。


 INDEX
  VSTSの単体テスト機能は本当に使えるのか?
  第1回 Team Systemのテスト機能の実際
    1.自動化された単体テスト(1)
    2.自動化された単体テスト(2)
    3.コード・カバレッジ
  4.TE for Tester特有のテスト・ツール
 
インデックス・ページヘ  「VSTSの単体テスト機能は本当に使えるのか?」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間