前回はJavaを例にして、JUnitを用いたテストコードを書くことで単体テストの実行を自動化しました。今回はもう少し踏み込んで、テストコードの実装まで自動化してみましょう。

ホワイトボックステストによるテストコードの自動生成

 テストコード自動生成の有名なツールに米Agitar TechnologiesのAgitarOneがあります。ソースコードを解析し、カバレッジが100%となるようなテストコード(テストケース)を自動で生成するツールです。つまりこのツールは、ホワイトボックステストの観点でテストケースを抽出し、テストコードを生成します。ホワイトボックステストとは、ソースコードなどのテスト対象の構造に着目してテストケースを作成する手法で、主に単体テストで用いられます。

 このツールでは、ソースコードの中のif文やfor文の分岐を読み、コードカバレッジを充足させるようなテストケースを自動で抽出します。これにより、工数ゼロでテストケースを作成することが可能となります。

 ただし、注意点があります。このツールで自動生成するテストケースは、テスト対象のソースコードを“正”として作成したものだからです。そのため、正しくコンパイルできるコードであっても間違った仕様で実装されている場合、その間違いが正しいとされるテストケースが生成され、テストは成功してしまうのです。このままではその間違いに気付くことができません。

 したがって、このツールを使う場合は成功と判定されたすべてのテスト実行結果に対して、本当に期待通りの結果かどうかを目視で確認する作業が必要になります。

ブラックボックステストによるテストコードの自動生成

 ホワイトボックステストに対し、プログラムの設計情報(仕様)からテストケースを抽出する手法をブラックボックステストといいます。ブラックボックステストを採用することで、開発したプログラムが設計通りに動作するかどうかをテストすることができます。前回紹介したように、まずブラックボックステストで作成したテストケースについてコードカバレッジを計測し、足りない部分があればホワイトボックステストで補足するという手順を踏むことで、より確実な単体テストとなります。

 ブラックボックステストの場合、設計情報を理解してテストケースを抽出し、それからテストコードを実装します。したがって、テストコードの実装を自動化するためには、設計情報を入力とするか、テストケースを入力とするか、いずれかのやり方が考えられます。

 設計情報をテストコード自動生成のための入力情報とするには、設計書を形式的に記述する必要があります。しかし、多くの開発現場ではプログラムレベルの設計書を厳密に作成しておらず、しかもそれを形式的に記述するとなるとハードルが高くなります。したがって、テストケース(テストケース表)を入力とするのが現実的なアプローチとなります。そこで今回は、NTTデータが開発したテストケース表からテストコードを自動生成するツールTERASOLUNA RACTES for UTを紹介します。