NTT DATA

DATA INSIGHT

NTTデータの「知見」と「先見」を社会へ届けるメディア

絞り込み検索
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
background-image-careers
2012年8月30日技術ブログ

単体テスト自動化~JUnitの一歩進んだ使い方~

現状、単体テスト自動化ツールの利用率は3割に満たない状況ですが、従来の問題を解消した新たなツールが登場し、今後の普及が期待されています。

ユニットテスト・フレームワークによる単体テスト実行の自動化

日経SYSTEMSの調査参考1によると、単体テストでのツール利用率は27.7%と決して高くありません。単体テストの実行を自動化するテストツールには、Java用のJUnit参考2をはじめとする、ユニットテスト・フレームワーク(xUnit)と呼ばれるものがあります参考3。今回は主にJUnitを使ったJavaの単体テスト自動化の動向を解説します。

JUnitのメリット・デメリット

JUnitが世に出て10年以上が経ちました。JUnitは「テストコード」と呼ばれるテスト用のソースコードを書くことで単体テストを自動実行でき、特に回帰テストで大きなメリットが得られます。また、統合開発環境のEclipseに同梱されているため利便性が高く、「テスト駆動開発(TDD)」参考4でも効果的に活用されます。
しかし、ツールの利用率は3割に満たないという事実があります。これは、実際の開発でJUnitを使う上でのデメリット(テストコード作成工数の増加や、テストコードメンテナンス工数の増加)が原因と考えられます。
これらのデメリットを解消するための取り組みを紹介します。

JUnitによる単体テストを支援するツール

2004年頃に米国のAgitar社が開発した「Agitator」という単体テストツールが話題になりました参考5。このツールは「ホワイトボックステスト」の考えにより、ソースコードのロジックを解析して、テストのカバレッジが高くなるようにテストコードを自動生成します。夢のようなツールに思えますが、日本ではヒットしませんでした。欠陥を含む可能性があるテスト対象(ソースコード)を素材としてテストコードを生成することになってしまうため、日本的な開発のやり方には合わなかったと考えられます。
そこで、ソースコードの仕様に基づいた「ブラックボックステスト」を支援するツールが出てきました。Parasoft社のJtestはソースコードを解析してテストコードを自動生成するとともに、ExcelやCSVで作成したテストデータを利用したブラックボックステストの機能も持ち合わせています参考6。また、Google社のCodePro AnalytiXは、Eclipse上のグリッドで作成したテストケースと同期したテストコードが作成されます参考7
これらのツールを使う際、テストケースを表形式で作成してメンテナンスすれば、テストコードの作成やメンテナンスが不要になり、先のデメリットが解消されます。
NTTデータでは、ブラックボックステストによる単体テストをサポートするツールとして、Excelで作成したテストケース表をもとにJUnitのテストコードを自動生成する「TERASOLUNA RACTES for UT」を開発し、社内外での活用を推進しています(図)。

【図】

図:TERASOLUNA RACTES for UTの活用イメージ

注釈

  • 現在は「AgitarOne」として日本ではエーアイコーポレーション社より販売されています。

お問い合わせ