はじめてのテストツール分類 - 後編
はじめてのテストツール分類 (前編)からの続きです。
テスト実装
スタブツール
例えばユニットテストを実施する場合に、一部のモジュール(クラス・関数等)が未完成などの理由で、その部分はダミーの実装を使ってテストを行うことがあります。このようなダミーのモジュールのことを「スタブ」と呼びます。(図1)
スタブツールを使うと、このようなスタブのソースコードを簡単に生成することができます。
シミュレータ
例えば家電製品やスマートフォン向けのプログラムをテストする場合、実際の機器を用意したり、毎回実際の機器にプログラムをインストールするのは非常に手間がかかる場合があります。シミュレータを使うと、実際の機器を用意しなくてもパソコン上でこれらのプログラムを動作させることができ、テスト作業の効率化につながります。
他には、システム間連携時の動作をテストする場合に使える、連携先システムがあたかも存在するかのように振舞うシミュレータなどもあります。
ラボイメージツール
仮想化のテクノロジーを利用して、テスト環境(クライアント、サーバー、データベースなど)の複製を簡単に行ったり、エラーが発生した時点のテスト環境を保存しておいて後で簡単に復元したりできるツールです。
テストデータジェネレータ (利用データを基にデータ生成するツール)
テストで使用するデータベースのデータを生成するツールです。
本番環境のデータをそのままテストデータとして使用すると、データサイズが大きすぎたり、セキュリティ上問題があったりします。テストデータジェネレータを使うと、本番環境のデータの一部だけを抽出する、マスキングをかける、などの方法で、テストデータを生成することができます。
テストデータジェネレータ (プログラムの期待値からデータ生成するツール)
ある1つの関数のユニットテストを作成する場合、その関数のパラメータを変えて何通りものテストを行うことがあります。
テストデータジェネレータを使うと、このようなパラメータのパターンを、様々なニーズに応じて自動生成できます。具体的には、組み合わせテストの技法を用いて生成したり、テスト対象関数内の全ての処理を通るように生成したりすることができます。
テストデータジェネレータを使うと、このようなパラメータのパターンを、様々なニーズに応じて自動生成できます。具体的には、組み合わせテストの技法を用いて生成したり、テスト対象関数内の全ての処理を通るように生成したりすることができます。
テストケース管理ツール
テスト手順を具体的に記述したドキュメントである「テストケース」を管理するツールです。
テストケースはExcelで管理されることも多いですが、テストケース管理ツールを使うことで、テストケースの管理が容易になります。
コード解析
静的解析ツール
ソースコードを解析して、次のような情報を取得するツールです。
- 決められた形式に従ってソースコードが記述されていない箇所の検出
- 様々なバグの検出
- ソースコードの品質や複雑さの目安となる様々な数値の測定
構造解析ツール
ソースコードを解析して、モジュール(クラス・関数等)どうしの関係や処理の流れを、図やグラフにします。図やグラフにすることで、システムの構造の把握が容易になります。
テスト(自動)実行
ユニットテストツール
ユニットテストとは、システム中の個々のクラスや関数の動作をチェックするテストです。各クラス・関数に対し、その動作をチェックするプログラムを作成し、それを実行して正しく動作するかをチェックします。(図3)
public void testMaxItem() { int[] target = {1, 8, 3, 0, -1}; int value = maxItem(target); assertEquals(value, 8); }
一度プログラムを書いておけば後は何回でも自動実行できるため、何度も同じテストを実行する場合には大きな効果があります。
ユニットテストツールは、上記のようなテストプログラムの作成を支援するツールです。
キャプチャ/リプレイツール
ユーザーの、マウス・キーボードなどの操作を記録し、何度でも再生できるツールです。操作を何回でも自動実行できるため、何度も同じテストを実行する場合には大きな効果があります。
性能テストツール
Webサーバーなどに大量のアクセスがあった場合の、システムの性能を測定するツールです。
サーバーに対する大量のアクセスを擬似的に生成して負荷のかかる状況を再現したり、システムの応答にかかる時間を測定したりすることができます。
セキュリティテストツール
システムに脆弱性(セキュリティ上の問題点)が無いかをチェックするツールです。
システムの脆弱性を人間が全てチェックすることは困難な上に、1つでも脆弱性があると重大なセキュリティ事故につながる可能性があるため、ツールを使った脆弱性のチェックは意義が大きいと言えます。
テスト自動実行支援ツール
多数の自動テストの管理やスケジュール実行、テスト結果の管理を行うツールです。
テスト自動実行支援ツールは、何らかの自動テストツール(ユニットテストツールやキャプチャ/リプレイツール)に付属しているものがほとんどですが、オープンソースのツールであるJenkinsのように、それ単体では自動テストの機能を持たないものもあります。
テストウェア管理
構成管理ツール
「構成管理ツール」という言葉は様々な意味合いで使われることがあるのですが、テストツールまるわかりガイド(入門編)においては、ソースコード・ドキュメントなどを変更履歴を含めて管理する、いわゆる「バージョン管理システム」のことを指しているようです。
テスト関連ドキュメントや自動テストプログラムのソースコードは、テスト対象システムのバージョンによって変わるため、テスト対象システムの各バージョンのソースコードと関連付けて管理する必要があります。その意味で、構成管理ツールもテストツールの一種であると言えます。
図5.オープンソースの構成管理ツールTortoiseGitの画面
テスト結果管理
テスト結果管理/テスト結果レポートツール
テストの実行結果を集計・分析して、レポートやグラフにするツールです。これにより、テストの進捗やシステムの品質の把握が容易になります。
テスト結果管理/テスト結果レポートツールは、他のテスト実行ツールに付属しているものがほとんどです。
インシデント管理
インシデント管理ツール
テスト中に発見された、バグと思われる問題を記録し、その顛末を管理するためのツールです。一般には「バグトラッキングシステム」と呼ばれることが多いようです。
図6.オープンソースのインシデント管理ツール、Redmineの画面
いかがだったでしょうか。どのツールも、うまく使えば現在のテスト業務を大きく効率化することができます。
テストツールまるわかりガイド(入門編)ではさらに詳しい解説が載っている上、実際のツールも多数紹介されています。興味のある方はぜひ一度見てみて下さい。