Fujitsu Laboratories of Americaと富士通研究所は、ソフトウエアの単体テスト(ユニットテスト)において、ソフトの改良や変更に伴う再テストの工数を減らせるテスト自動生成技術を開発した。バージョンの異なるオープンソースソフト(OSS)で検証したところ、従来技術と比較してバージョン変更に伴うテストコードの増分を1/24に抑えられたという。

 頻繁に仕様の変更が発生するアジャイル開発にも適用しやすいテスト自動生成技術として、富士通の顧客向けアジャイル開発プロジェクトなどに適用した上で、2016年度中の実用化を目指す。

今回開発した技術では、ソフトの更新に伴う既存テストケースのコード変更を最小限に抑えることで、テスト結果の確認などにかかる手間を減らし、アジャイル開発にもテスト自動生成を適用しやすくする
今回開発した技術では、ソフトの更新に伴う既存テストケースのコード変更を最小限に抑えることで、テスト結果の確認などにかかる手間を減らし、アジャイル開発にもテスト自動生成を適用しやすくする
[画像のクリックで拡大表示]

 テスト自動生成技術とは、あるソフトウエアの関数やサブルーチンについて、ソースコード上のあらゆる分岐を試行できるよう、テストコードにおける変数の入力値を変えた複数のテストケースを自動生成する技術のこと。生成された入力値に対応したソフトの振る舞いや出力値の妥当性は、仕様に基づいて技術者が判断する必要がある。富士通はこれまで、Java、C/C++、COBOL、JavaScriptに対応したテスト自動生成技術を開発していた。

 これまでの富士通の自動生成技術では、一度テストしたソフトウエアに改良を加えた際、再利用ができないテストケースについては全コードを生成し直す必要があった。変数の入力値も全て変わるため、仕様に基づくソフトの振る舞いや出力値についても検討し直す必要があり、テスト工数の肥大化を招いていた。

ソフトウエアのあるバージョン(左)と、自動生成した2つのテストケース(右)
ソフトウエアのあるバージョン(左)と、自動生成した2つのテストケース(右)
[画像のクリックで拡大表示]
従来の技術では、ソフトウエアの変更に伴い、テストケース2を廃棄し、新たなテストケース3を生成していた
従来の技術では、ソフトウエアの変更に伴い、テストケース2を廃棄し、新たなテストケース3を生成していた
[画像のクリックで拡大表示]

 今回両社が開発した技術では、変更の必要があるテストケースについても、コードの大半を生かしながら、追加・改良した箇所を試行できるよう変数の入力値を部分的に変えたテストケースを生成できる。これにより、テストケースの把握、テスト結果の確認、テストケースのメンテナンスにかかる手間を減らすことができる。

今回の技術では、テストケース2のコードを一部変更することで、ソフトウエアの変更に対応できる
今回の技術では、テストケース2のコードを一部変更することで、ソフトウエアの変更に対応できる
[画像のクリックで拡大表示]

 両社は、約5000行のコードからなるネットワーク解析のOSS「iPerf」の異なる5つのバージョンに対し、新旧のテスト自動生成技術を適用する実験を行った。まず、iPerf2.0.1で新規に自動生成したテストコードは3247行だった。このテストコードをベースに、2.0.2~2.0.5の4バージョンについてテストを追加生成したところ、従来技術ではテストコードの増分は4バージョンで計6422行だったところ、今回の技術では計270行と、約1/24に抑えられたという。