修正したアプリケーションをいち早くリリースするためには、アプリケーションの動作検証も短時間に終える必要がある。これを実現するのが、継続的インテグレーション(CI)ツールとテストツールだ。新規開発から実施するだけでなく、既存のソースに対しても適用できる。

TIS
3時間おきに回帰テスト
Jenkins、JUnit、PMD など

 「システム稼働後の追加・修正でデグレードを起こさないことに最大の注意を払った」と、TISの竹内祐介氏(アプリケーション開発センター アプリケーション開発部主査)は述べる。

 デグレードとは、システムをバージョンアップした際に、以前よりもサービスの品質が低下することだ。機能追加や修正のためにソースコードを変更したとき、動作検証が不十分だと起こり得る。

 竹内氏がチームリーダーを務めたリース会社の資産管理SaaSの開発プロジェクトでは、特にデグレード対策が重要だった。このプロジェクトでは、最初に必要最小限の機能をリリースし、追加すべき機能は利用部門のフィードバックを受けながら1カ月ごとに追加・修正していく方針が立てられていた。

 竹内氏が採った策は、回帰テストを自動化すること。回帰テストは、バージョンアップのたび、すべてのソースコードに対して同じテストを繰り返し実行する手法だ。CIツールである「Jenkins」などを使って静的/動的テストを自動化し、漏れなくテストを実行するようにした。

3時間ごとにすべての単体テスト実行

 このプロジェクトで開発フェーズに入る前に、Jenkinsと各種テストツールを組み合わせたシステムを構築した。利用したツールは、バージョン管理ツール「Subversion」、ビルドツール「Ant」、コーディング規約チェック「Checkstyle」や単体テスト「JUnit」など5種類のテストツールである。

 これにより、開発とテストを同時に進められる仕組みが整った(図1)。

図1●TISはすべてのソースコードを対象にしたテストを3時間おきに自動実行
図1●TISはすべてのソースコードを対象にしたテストを3時間おきに自動実行
[画像のクリックで拡大表示]

 開発現場での利用イメージはこうだ。まず開発者は、テストのシナリオを記述した「テストコード」と、テストに必要な「テストデータ」を作成する。次に、テストコードに記述したシナリオがすべて成功するように、ソースコードを作成する。

 その後、ローカルの開発環境でテストツールを実行する。開発者は、テストツールでエラーが表示されなくなるまで、ソースコードの修正とテストを繰り返す。エラーが解決したら、ソースコード、テストコード、テストデータをバージョン管理ツールに保存する。

 単体テストの実行は、Jenkinsに管理者が設定した情報を基に自動で進む。このプロジェクトでは、Jenkinsが3時間おきにバージョン管理ツールにアクセス。ソースコードやテストコードなどの変更履歴をチェックする。変更があればすべてのコードを取得し、テストツールを実行。その結果をJenkinsが開発メンバー全員に通知する。

 開発者は、自分が担当するソースコードにエラーがあれば、テストコードとソースコードを修正し、再度、ローカルの開発環境でテストツールを実行する。正しく動作したらバージョン管理ツールに保存。3時間後には再びJenkinsがすべてのソースコードを対象にテストを実施する。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。