はじめてのテストツール分類 - 前編
世の中には、ソフトウェアのテストを効率化するツール、テストツールがたくさんあります。
このテストツールにはどんな種類のものがあるのかを解説した、テストツールまるわかりガイド(入門編)というものが、NPO法人ASTER(ソフトウェアテスト技術振興協会)のテストツールWG(ワーキンググループ)によって作成されています。
ガイド中では、テストツールを複数のカテゴリに分類して解説しているのですが、読んでいて、各分類の内容が難しいなあと思うことが時々ありました。
そこで今回は、このガイドの第4章「テストツール体系」の章で行われている分類をもとに、テストツールにはどんなものがあるか、もう少し簡単に解説してみたいと思います。
具体的には、テストツールに詳しくない人でも、各ツールの雰囲気がなんとなくつかめるような解説の仕方をしています。
なお、分類の仕方はもとのガイドと同じですが、各分類の説明はほぼ独自のものです。ガイドの解釈も自己流なので、もしかしたらガイドの意図と違う説明になっているかもしれません。
後編へ (テスト実装、コード解析、テスト実行、テストウェア管理、テスト結果管理、インシデント管理)
テスト分析
要件管理ツール
システムを作る場合、最初にどんなシステムを作るのかを決めなければいけません。
この「どんなシステムか」を、具体的にドキュメントに落とし込む作業を、要件定義と言います。
要件管理ツールは、このようなドキュメントの作成・管理を効率的に行うことができるツールです。「テストとは直接関係ないのでは?」と思うかもしれませんが、作成した要件とテストケースを関連づけて管理することもできるので、立派なテストツールと言えるでしょう。
テスト設計
状態遷移テストツール
ソフトウェアテストの技法の1つに、「状態遷移テスト」という技法があります。
これは、システムの状態と変化の流れを表した「状態遷移図」(図1)を作成し、それを活用してテストを行うという技法です。
状態遷移図を作成してみることで、「あれ、この場合の処理はどうなるんだっけ?」のように、テスト対象システムの仕様の不備や曖昧さに気付きやすくなります。さらに、状態遷移図を見ながらテストケースを作成すれば、「すべての状態を1度は通る」「すべての矢印を1度は通る」のように、抜け漏れのないテストケースが作成しやすくなります。(図2)
しかし、この状態遷移図を元に抜け漏れのないテストケースを作成するのは、それなりに大変な作業です。状態遷移テストツールを使えば、状態遷移図の作成や、そこからの抜け漏れのないテストケースの作成が容易になります。
組み合わせテスト支援ツール
同じくソフトウェアテストの技法の1つである、「組み合わせテスト」を支援するツールです。
例えば、図3のプリンターの全設定値の組み合わせをテストする場合、単純に全ての組み合わせをテストしようとすると、2×2×4×2×2=64(通り)の組み合わせをテストすることになり、非常に時間がかかります。
そこで、一部の組み合わせだけを選んでテストすることになるのですが、「直交表」や「All-Pairs法(Pairwise法)」という技法を用いて組み合わせを選び出すと、効率よくバグを検出できることが経験的に知られています。(図4)
組み合わせテスト支援ツールは、このような「直交表」や「All-Pairs法(Pairwise法)」を使ったテストケースの作成を支援してくれるツールです。
原因結果グラフ作成ツール
やはりソフトウェアテストの技法の1つである、「原因結果グラフ」と「デシジョンテーブル」を使ったテストを支援するツールです。
デシジョンテーブルは、図5のような、複数の条件の組み合わせと、期待される結果の表です。
デシジョンテーブルを使ってテストケースを作成することで、仕様を整理できる、各組み合わせを漏れなくテストできる、などの効用があります。
原因結果グラフは、図6のような、システム仕様を整理するのに使われるグラフです。
実は、原因結果グラフからデシジョンテーブルを機械的に生成することができるのですが、これを手作業でやるとかなりの手間です。
原因結果グラフ作成ツールを使うと、原因結果グラフを作成して仕様を整理した上で、そこからデシジョンテーブルのテストケースを自動生成することができます。
動的解析ツール
ソフトウェアのバグ(欠陥)の中には、「長期間使用していると少しずつメモリが足りなくなり(メモリリーク)、処理が遅くなる」「タイミングによってごく稀にエラーが発生する」などの、手動テストでは非常に見つけにくいものがあります。
動的解析ツールは、テスト対象システムの動作中にメモリなどの状態を監視し、上記のような手動では発見困難な問題を検出します。
静的解析ツールとの違いは、動的解析ツールが動作中のシステムの状態を解析するのに対し、静的解析ツールはソースコードを解析するので、解析対象システムを動作させなくてもよい点です。動的解析は解析対象システムを動作させる手間はかかりますが、静的解析では検出困難なバグを見つけることができます。
カバレッジ計測ツール
自動化されたテストを実行する場合、「テスト中に一度でも通ったソースコードは、全ソースコードのうち何%か」を測定すれば、テストの量が十分か不足しているかを知る判断材料になります。
カバレッジ計測ツールを使えば、このようなテストの網羅率を計測することができます。
その他テスト設計支援ツール
様々な種類のものがありますので、説明は省略します。