.NET Tools

テスト・シナリオを自動生成できる
テスト・ツール「.TEST」(ドットテスト)

(株)ピーデー 川俣 晶
2004/02/04

Page1 Page2 Page3

テスト報告書など書いている時間がないのに

 しばしば遭遇する状況なのだが、開発プロジェクトも追い込み状態で、だれもが手いっぱいなのに、決められたドキュメントを出せ、と官僚主義的にいわれる状況がある。もちろん、適切な予算とスケジュールが設定され、ドキュメント作成のための工数も取られているのなら問題はない。しかし、予算とスケジュールが破はたんし、プログラム本体を完成させるだけの工数も不足していて、そこにドキュメント作成の工数など割り込ませる余地がないことも、しばしばある。そのような状況で、プロジェクトを崩壊させないで軟着陸させるには、どうしても必要な作業に集中する必要がある。もちろん、プログラムの性能にも信頼性にもさほど影響を与えないドキュメントの作成などに工数を取ることは、ぎりぎりの軟着陸を破たんさせかねない。それでも、ドキュメントを出せと要求されるケースが確かにある。しかも、要求をコロコロと変えて予算とスケジュールを破たんさせた張本人が、ドキュメントを要求したりする場合もある。

 さて、そんな立場に立たされた場合に、一考に値するソフトがある。要求されたドキュメントがテスト結果の報告書であり、具体的な書式に特に注文が付いていないのなら、「.TEST」(ドットテスト)というツールを使えば、数えるほどの回数のクリックを行うだけで、テスト結果に関するドキュメントを生成することができる。プログラミングの知識もほとんど要らない。手順も簡単である。

 なお、本稿では出荷直前の最終ベータ版を使用している。このため製品版とは若干動作が異なる点があるかもしれないことをご了承いただきたい。

.TESTによるドキュメント生成の実際

 ではまず、実際に.TESTがドキュメントを生成する過程を見てみよう。ここでは、以下のようなサンプル・ソースをVisual Basic .NET(以下VB.NET)で作成してみた。このサンプル・ソースはビルド済みであるとしよう。また、.TESTはすでにVisual Studio .NET 2003(以下VS.NET)の環境にインストール済みであるとする。

Module Module1

  Public Function Add(ByVal x As Integer, ByVal y As Integer) As Integer
    Return x + y
  End Function

  Public Function Subtract(ByVal x As Integer, ByVal y As Integer) As Integer
    Return x - y
  End Function

  Public Function Mult(ByVal x As Integer, ByVal y As Integer) As Integer
    Return x * y
  End Function

  Public Function Div(ByVal x As Integer, ByVal y As Integer) As Integer
    Return x / y
  End Function

  Sub Main()
    Console.WriteLine(Add(3, 2))
    Console.WriteLine(Subtract(3, 2))
    Console.WriteLine(Mult(3, 2))
    Console.WriteLine(Div(3, 2))
  End Sub

End Module
.TESTでドキュメントを生成させるためのサンプル・ソース
このサンプル・ソースはVB.NETで記述したコンソール・アプリケーション。

 .TESTがインストール済みであれば、VS.NETのツールバーに、.TESTのボタンが見えるはずである。

.TESTをインストール済みのVisual Studio .NET
ツールバーの最も左側の薄い青色の[.net]ボタン()をクリックすると.TESTが別ウィンドウで起動する。

 ここで、ツールバーの最も左側の薄い青色の[.net]ボタンをクリックする。これが、.TEST本体を起動する機能を持つ。

.TEST起動時の画面

 ここからが操作の本番である。左部の「プロジェクト」の文字を右クリックして、「ファイルを開く」を選ぶ。そして、サンプル・ソースをビルドした実行ファイルを選択する。

実行ファイルを選択するダイアログ
.TESTの画面で「プロジェクト」の文字を右クリックして開く。ここで対象となる実行ファイルを選択する。

 すると、「プロジェクト」の下に実行ファイルのファイル名が追加される。このファイル名を右クリックして、[完全解析]を選ぶ。

対象実行ファイルを設定した.TEST
追加した実行ファイルを右クリックし、[完全解析]を実行する。

 すると、以下のようなダイアログ・ボックスが出てくる。

シンボル読み込みの確認ダイアログ
.TESTはテスト対象となる実行ファイルのシンボル情報を読み込む。

 .TESTは、テスト対象を把握するために、ビルドした実行ファイルのシンボル情報を読み込む必要がある。ここでは、まだそれを読み込んでいないので[はい]ボタンを選ぶ。

 その後、しばらく作業が続く。ウィンドウ左下部が緑色で点滅している間が作業中である。しばらくすると、以下のようなダイアログ・ボックスが出てくる。

シナリオ生成の確認ダイアログ
.TESTはテストの条件を「シナリオ」として生成する。シナリオは実行ファイルのシンボル情報に対して生成される。

 .TESTは、テストの条件を「シナリオ」として生成する。まだシナリオを一切生成していないので、ここでは[はい]ボタンを選んで作成させる。

 作業が終わると、以下のようなダイアログ・ボックスが表示される。

作業完了を知らせるダイアログ・ボックス
.TESTは、自動生成されたシナリオを実行してテストを行い、その結果をレポートする。

 これは[OK]ボタンをクリックして閉じてよい。

 ここで、[ファイル]メニューから[HTMLレポートの生成]を選ぶと、以下のようなダイアログ・ボックスが出てくる。

[レポートの選択]ダイアログ
左側のリストから作成するレポートの種類を選び[生成]ボタンをクリックするとHTMLファイル形式のレポートが作成される。

 ここからHTML形式の各種レポートを生成することができる。左側のリストから作成するレポートの種類を選び、下の[生成]ボタンをクリックすると、HTMLファイル形式でレポートが作成される。

 実際に生成してみた内容を以下に掲載する。HTMLファイルなので、画面スナップショットを掲載するのではなく、そのものを掲載してリンクしてある。

生成されるドキュメント ドキュメントの概要
Active static rules 現行プロジェクトのすべてのアクティブな静的解析ルールのリスト
Coverage chart 現行コンテキストのカバレッジ(テストの網羅率)統計とともにチャートを表示
Coverage statistics 現行コンテキストのカバレッジ統計を表示
Detailed coverage chart 現行コンテキストの全サブ・コンテキストに対する各カバレッジ・タイプのチャートを表示
Detailed dynamic results chart 現行コンテキストの全サブ・コンテキストのテスト・ケースの統計を表示。各ステータスは個別のチャートに表示される。
Detailed source coverage カバレッジ・データとともにソース・コードを表示
Detailed static severities chart 重要度レベルのチャートを表示(現行コンテキストのファイルの値)
Dynamic results chart 現行コンテキストに対するすべてのテスト・ケースの統計を表示
Dynamic results 動的解析の結果を表示
Static results 静的解析の結果を表示
Static severities chart 重要度レベルのチャートを表示(現行コンテキストの合計値)
Static violations chart 現行コンテキストからのすべてのファイルに対する静的解析メッセージの数を表示
.TESTで自動生成されるテスト結果ドキュメントの一覧と概要

 以上のような簡単な手順で、実際のプログラムに即したテスト結果のドキュメントを作成することができる。つまり、プログラムが変化すれば、テスト結果も変化するのである。このように、単純な形式的なドキュメントを、実に簡単に作成することができる。

 ……ただし、現時点では、この手順で作成したテスト結果レポートにはほとんど何の意味もないことに注意をしなければならない。つまり、レポートがすべてのテストにパスしたと主張したとしても、それはプログラムが正常に動作している保証にはまったくならず、また、「fail」と記録された結果があるからといって、それがバグであるとは限らないということである。もし、品質を上げるために使うなら、手間暇をかけて、個々の機能の意味を吟味し、きめ細かい設定を行い、正しく使う必要がある。

 なお、HTML形式のレポートが不要で自動テストだけを実行したいならば、最初にクリックした[.net]ボタンの右側に並んでいるボタンからワン・クリックでそれが可能だ。この場合のテスト結果は、VS.NETの[出力]ウィンドウの「.TEST Analysis」の項目に出力される。

■コラム インストール時のトピック
 .TESTは、既存のクラス・ライブラリなどを高速に扱うため、インストール時に「プリスキャン」という作業を行うことができる。プリスキャンは、以下の2つを対象に行われる。

  • .NET Frameworkアセンブリ
  • グローバル・アセンブリ・キャッシュ(GAC)のアセンブリ

 .TESTは結構重いソフトである。その重さは、実際に処理している内容の重さという側面が大きい。そのためか、インストール時のプリスキャンは有効であるとされている。しかし、プリスキャンは時間がかかる。その間のCPU負荷も高い。ほかの作業中に、バックグラウンドでセットアップを走らせようとすると後悔するかもしれない。仕事を終えて帰るときにセットアップを行い、プリスキャンを開始させてから帰宅する方が快適かもしれない。

 
 

 INDEX
  [.NET Tools]
  テスト・シナリオを自動生成できるテスト・ツール「.TEST」(ドットテスト)
   1..TESTによるドキュメント生成の実際
     2.静的解析と動的解析、シナリオの自動生成の存在意義
     3.RuleWizard、メソッドの動的解析、テスト駆動開発との対比
 
インデックス・ページヘ  「.NET Tools」


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 記事ランキング

本日 月間