テスト・ツールには,マネジメント,動的/静的テストの支援,テスト・ドキュメント作成支援などさまざまな種類があります。使い方を間違えると,逆に効率が下がってしまうので,利用には十分な調査が必要です。
テストを効率化するツールと言っても,テスト実行を支援するツール,テスト準備を支援するツール,テスト設計を支援するツールなどさまざまなツールが存在します。「JSTQBテスト技術者資格制度Foundation Levelシラバス 日本語版」(以下JSTQBシラバス)でのテスト・ツールの分類は図1のようになります。
では,図1の大分類ごとにそれぞれのツールはどのようなものかを説明していきます。
テスト・マネジメント支援ツール
テスト・ケースを管理し,進ちょく状況を把握したり,インシデント(不具合)を管理して,何件の不具合が見つかって未修正のものが何件かなど不具合の状態を把握したりするツールがこの分類に含まれます。テストをマネジメントするマネージャやリーダーがテストの状況を把握するために使います。
テスト・マネジメントを支援するツールは,地味ですがとても重要なツールです。テスト・ケースや不具合の管理ができていないと,そもそものテスト・マネジメントが行き当たりばったりになってしまいます。また,大事なテストを漏らしてしまうなど,自動テスト・ツールを活用する以前の問題が多数発生し,ツール導入の効果がわからなくなってしまう可能性が高くなるからです。
静的テスト支援ツール
静的テストとは,レビューやコーディング・ルールのチェック,ソースコード・メトリクス測定などから欠陥を見つけるテストを指します(「テスト」と通常呼ばれているものは,静的テストに対しては,動的テストとよばれます)。静的テスト・ツールで代表的なものが静的解析ツールです。
静的解析ツールは,バッファオーバフローのような動的テストでは見つけることが困難な欠陥を,コードの記述内容から見つけることができます。また,動的テストの前にプログラムのどのあたりが品質に問題がありそうなのか当たりをつけて,テスト量の強弱をつけるのに役立ちます。
テスト仕様支援ツール
テスト・ケース作成を支援するツールとテスト・データ作成を支援するツールが該当します。
テスト・ケース作成では,Part2で解説した制御パス・テストのテスト・ケースを生成するもの,状態遷移図からテスト・ケースを作成するもの,AllPairテストのテスト・ケースとなる組み合わせを自動的に作成するツールなどが代表的なものだといえます。
テスト・データ準備ツールとしては,例えばデータベースのデータ定義に合わせてテスト・データを自動的に作成するツールなどがあります。
この種のツールは,なんでもかんでも自動的に行ってくれるわけではありません。作成するための基になる情報を適切にインプットしないと,まともなものは出てきません。テスト・ケース作成ツールにしても,特定のテスト設計技法のルールに従ってテスト・ケースを生成するだけです。
「何をテストするのか」「どの機能を重点的にテストしなければならないのか」「どのテスト設計技法を適用するのか」など,テスト設計技法を適用する前段階の作業は当然ツールではできません。
テスト実行とロギングの支援ツール
一般的に言う自動テスト・ツールのことで,Part4で紹介したJUnitはこのカテゴリに入ります。統合テスト以降のテストの自動化では,PC上のマウスやキーボードの操作を記録,再生して期待結果と自動比較するキャプチャ/リプレイ・ツールが有名です。
自動テスト・ツールを使うことには意義がありますが,自動テスト・ツールを使うとすべての作業が自動的に実施されるようになるわけではありません。そもそも手動で行ったことがないテストは,自動ツールを使っても簡単には実施できませんし,逆にすべて手動で行っていたテストを自動化することもできません。テスト・プロセスを見直さないと,自動化のための作業に手間がかかりすぎてしまい,効果が出ない場合もあります。
性能・モニタリング支援ツール
テスト実行中にソフトウエア内部の状態を解析し,タイミングに依存するものやメモリー・リークなどソフトウエアを実行して初めてわかる欠陥を見つける動的解析ツール,手動のテストでは実施困難な大量の負荷をシステムへ与えるツール,負荷を与えたときの応答時間測定やシステム・リソース・モニタリング(監視)を行うツールが該当します。
これらのテストは,ツールを使わないと実施が極めて困難な場合が多いので,ツール活用の効果はテスト実行を支援する自動テスト・ツールと比較するととてもわかりやすいと言えるでしょう。ただこの種のツールも実施のための手間はかかります。なぜ測定しなければならないのか,何を測定するのかなどをしっかり計画し,行き当たりばったりなテストにしないことが大切です。
そのほかのテスト・ツール
基本的にテスト・ツールは上記の四つに分類できますが,組み込み系開発で使うシミュレータや,Webアプリケーション専用の性能テスト・ツールなど,特定アプリケーション分野に特化したツールとなっているものも多くあります。プログラム言語ごとに制約があるツールも存在するので,自分たちの開発に適用可能なツールかどうか,十分な調査/検証が必要です。
また,テスト・ツールではないけれども,テストの効率アップに役に立つツールも多くあります。代表的なものがMicrosoft Excelでしょう。データ作成,テスト結果比較,マネジメント支援などさまざまな場面で活用できます。また,ハードディスクやデータベースを初期状態に戻すツール,環境の自動設定をするツールなどもテストの効率化に役立ちます。
このようにテスト・ツールと一言で言ってもいろいろな種類があり,適用できる場面も異なります。使い方を間違えると効果が出ないだけでなく,逆にムダに工数がかかってしまうなど逆効果になってしまうことさえあります。
テスト・ツールによって得たい効果を見極め,テスト・ツールによるリスクをコントロールし,テスト・ツールを活用できるスキルを身に付けることで,初めてツールの恩恵を得ることができるのです。