2012年8月30日

イマ旬キーワード

テスト自動化

現状、単体テスト自動化ツールの利用率は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」として日本ではエーアイコーポレーション社より販売されています。

著者プロフィール

【写真】

技術開発本部 町田 欣史

テストプロセス改善やテスト自動化の研究開発、技術支援に従事。社外での講演、記事執筆実績多数。JSTQB(Japan Software Testing Qualifications Board)、NPO法人ASTERテストツールWG等、業界団体での活動も精力的に行う。

イマ旬キーワード

お気軽に
お問い合わせ
ください

単体テスト自動化~JUnitの一歩進んだ使い方~に関するお問い合わせ

お問い合わせフォーム

単体テスト自動化~JUnitの一歩進んだ使い方~に関連する情報

サービス

システム開発の手順・環境やサポートを一体化したトータルソリューションで、お客様業務の大幅効率化を実現