連載
» 2008年02月06日 00時00分 公開

CoolなEclipseプラグイン(24):これはすごい!?コード品質のカイゼン化プラグイン2種 (3/3)

[岡本隆史,@IT]
前のページへ 1|2|3       

ダッシュボードでテスト状況を把握するには?

 JUnit Factoryはダッシュボード機能を持っており、テスト結果の失敗件数やカバレッジの遷移などの情報を一覧できるようになっています。

図13 ダッシュボード機能の使用例 図13 ダッシュボード機能の使用例

 例えば、Javaで実装された「Z80」と呼ばれるCPUのエミュレータのダッシュボードは、こちらで見ることができます。

 ダッシュボードでは、パッケージやクラスごとの集計や、開発者ごとの集計もされるので、いろいろな観点で分析できます。

 ただし、残念なことに、日本語環境で利用するとグラフのフォントが文字化けしてしまいます(2008年1月現在)。グラフ上の日本語文字が読めないだけで、グラフなどは正しく表示されているので実用上問題はなさそうですが、今後の改善に期待したいところです。

JUnit Factoryを使う際の注意点

 JUnit Factoryで生成されたテストコードは、ソースコードからテストケースが生成されているため、すべてテストにパスした状態で生成されます。そのため、テストにパスしたからといって、テストが正しいとは限りません。

バグも正しい仕様と見なしてしまう

 もともとのソースコードにバグがある場合、バグを正しい仕様と見なしてテストケースを生成するため、「仕様どおりのテストをしないテストケース」が生成されるからです。JUnit Factoryを利用した場合は、生成されたテストケースをレビューし、本当に仕様どおりの動作をしているかどうか確認する必要があります。

 仕様と異なるテストケースが生成されていた場合は、テストケースを修正してからテストされるコードを修正します。まずテストケースを修正し、次にテストされるコードを修正し、テストをパスするかどうか確認します。

必要なテストコードをすべて作成してくれるわけではない

 また、JUnit Factoryは必要なテストコードをすべて作成してくれるわけではないので、カバレッジが基準値に満たない場合は、テストコードを追加する必要があります。

 JUnit Factoryはあくまで、テストケースの生成を支援するツールなので、レビューやテストコードの追加を行うのを忘れないようにしましょう。

機密性の高いコードで使う際には注意!

 また、JUnit Factoryを利用する際には、テストケースを生成するためにソースコードがJUnit Factoryのサーバにアップロードされるということに注意する必要があります。機密性の高いコードをアップロードすると情報漏洩(ろうえい)につながる恐れがあるので、利用には十分な注意が必要です。

試験的な利用やオープンソースでの使用がおすすめ

 JUnit Factoryは、もともとAgitar社の研究プロジェクトであり、コンピュータサイエンスを研究する学生やテストの自動化の研究者にAgitar社のソリューションを試してもらうために限定的に公開されていましたが、現在ではすべての開発者にサービスが公開されています。

 JUnit Factoryでは、Agitar社が提供するテストソリューション「AgitarOne」の機能の一部を無償で提供しています。テストコードの自動生成ツールとしてAgitarOneの購入を検討する際に試験的に利用する場合や、ソースコードを隠ぺいする必要がないオープンソースのソフトウェアを開発する場合などには、便利です。

保守性が高いコードか計測するCrap4jとは?

 冒頭でも紹介しましたが、Crap4jはJavaのソースコードに含まれるCRAP(Change Risk Anti-Pattern)を検出するためのツールです。JUnit FactoryはAgitar社が提供していますが、Crap4jはAgitar社の研究者がオープンソースで公開しているプラグインです。

あなたのソースコードにも潜んでいるかもしれない「CRAP」とは?

 「CRAP」とは、ソースコードが変更されたときに、変更された部分以外のコードの挙動をおかしくするリスクを増やすようなコードのパターンです。

 例えば、分岐が多岐にわたるような複雑なメソッドのコードを変更した場合、1個所変更すると、ほかの個所へ影響を及ぼす可能性が高くなります。また、自動化された回帰テストが十分用意されていない場合、メソッドのバグ修正などの変更時に、修正したいバグ以外の部分の挙動の変更を検知するのが難しくなります。

 まとめると、以下の2つのようなコードが変更時にバグを作り込むコードのパターンつまりCRAPに当たります。

  1. 分岐が多岐にわたる複雑なメソッド
  2. 回帰テストが十分に提供されていないメソッド

あなたのソースコードは“保守”しやすいですか?

 それでは、実際にCrap4jを使ってみましょう。

インストール方法

 下記のアップデートサイトからプラグインをインストールしてください。

  • http://www.crap4j.org/downloads/update

使い方

 ナビゲーションビューのプロジェクトを選択し、Eclipse[メニュー]の[Crap4j]→[Run Crap4j]を選択するだけです。

図14 Crap4jの実行 図14 Crap4jの実行

 実行すると、JUnitのテストが実行され、全体のCRAPが表示されます。

図15 全体のレポート 図15 全体のレポート

 メソッドごとの詳細なレポートを表示することもできます。

図16 メソッドごとのレポート 図16 メソッドごとのレポート

コラム「CRAPの計算式」

Crap4jでは、具体的に各メソッドのサイクロマティック複雑性(comp(m))とユニットテストによるカバレッジ(cov(m))を組み合わせた下記の式により、CRAPを計算します。

CRAP(m) = comp(m)^2 * (1-cov(m)/100)^3 + comp(m)

この式は、複雑性が高く、カバレッジが低い場合、値が大きくなります。また、複雑性が高くなればなるほど、カバレッジの影響が強くなります。複雑性が高いメソッドでは、コードを変更したときの副作用が表れやすいので、きっちりテストケースを作り込んでおく必要があります。


ソフトウェアの品質を効率よく向上させるために

 今回は、テストケースを自動生成するJUnit Factoryとコードの保守のしやすさを計測するCrap4jを紹介しました。

 これらのツールをうまく利用すれば、ソフトウェアの品質を効率よく向上させることができます。どちらも手軽に試せるので、一度試してみてはいかがでしょうか。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。