
CoolなEclipseプラグイン(24)
これはすごい!?
コード品質のカイゼン化プラグイン2種
岡本隆史
2008/2/6
ダッシュボードでテスト状況を把握するには?
JUnit Factoryはダッシュボード機能を持っており、テスト結果の失敗件数やカバレッジの遷移などの情報を一覧できるようになっています。
![]() |
| 図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に当たります。
- 分岐が多岐にわたる複雑なメソッド
- 回帰テストが十分に提供されていないメソッド
あなたのソースコードは“保守”しやすいですか?
それでは、実際にCrap4jを使ってみましょう。
■ インストール方法
下記のアップデートサイトからプラグインをインストールしてください。
- http://www.crap4j.org/downloads/update
■ 使い方
ナビゲーションビューのプロジェクトを選択し、Eclipse[メニュー]の[Crap4j]→[Run Crap4j]を選択するだけです。
![]() |
| 図14 Crap4jの実行 |
実行すると、JUnitのテストが実行され、全体のCRAPが表示されます。
![]() |
| 図15 全体のレポート |
メソッドごとの詳細なレポートを表示することもできます。
![]() |
| 図16 メソッドごとのレポート |
ソフトウェアの品質を効率よく向上させるために
今回は、テストケースを自動生成するJUnit Factoryとコードの保守のしやすさを計測するCrap4jを紹介しました。
これらのツールをうまく利用すれば、ソフトウェアの品質を効率よく向上させることができます。どちらも手軽に試せるので、一度試してみてはいかがでしょうか。
■ @IT関連記事
| ソフトウェアの品質向上を支援するプラグイン CoolなEclipseプラグイン(2) ソフトウェアのレビュー/テスト/デバッグを助ける「FindBugs」「djUnit」、有償製品の「Enerjy Thread Profiler」を紹介する 「Java
Solution」フォーラム 2005/4/16 |
||
| Eclipseで使えるテストツールカタログ 統合開発ツールにEclipseを選択する開発現場に、テストの効率化、ソフトウェア品質の向上のヒントを提供する |
||
| 快適なXPドライビングのすすめ 理論と実践は根本的に違う。本連載ではEclipseなどのツールを活用しながらXPの快適なドライビング方法を伝授する 第4回 EclipseとJUnitによるテスティング 第5回 テストファーストでコードを作成する 第7回 継続的インテグレーション&テスト環境の構築 |
||
| Webサイト構築に必要なさまざまなテスト手法 [連載]Java初心者のためのWebシステム入門(9) Webサイトのカットオーバーに備えて行う必要のあるテスト項目と手法の概要を解説します 「Java
Solution」フォーラム 2002/9/26 |
||
| |
1-2-3 |
| INDEX | ||
| Page1 | ||
| テストケースを自動生成するJUnit Factoryとは? JUnit Factoryを使ったテストケースの生成例 |
||
| Page2 | ||
| JUnit Factoryでカバレッジの確認 | ||
| Page3 | ||
| ダッシュボードでテスト状況を把握するには? JUnit Factoryを使う際の注意点 保守性が高いコードか計測するCrap4jとは? あなたのソースコードは“保守”しやすいですか? ソフトウェアの品質を効率よく向上させるために |
||
CoolなEclipseプラグイン バックナンバー 連載インデックスへ»
- 第1回 Javaのプロパティファイルを編集するEclipseプラグイン
- 第2回 ソフトウェアの品質向上を支援するプラグイン
- 第3回 データベース開発を支援するプラグイン
- 第4回 Webアプリケーション開発を支援するプラグイン
- 第5回 正規表現の入力・テストを行うプラグイン
- 第6回 サンプルコードの入手をサポートするプラグイン
- 第7回 プログラミングにあると便利なプラグイン
- 第8回 RSSを表示できるEclipseプラグイン
- 第9回 データベースの利用に便利なEclipseプラグイン
- 第10回 スクリプト言語をサポートするEclipseプラグイン
- 第11回 ビルドを効率化するEclipseプラグイン
- 第12回 便利なプラグインの集大成MyEclipse
- 第13回 簡単にFlashアプリを作成できるFlexBuilder 2
- 第14回 軽量なUMLプラグインAmaterasUML
- 第15回 バージョン管理に便利なSubversiveプラグイン
- 第16回 EPFプラグインでらくらく開発プロセス管理!(入門編)
- 第17回 EPFプラグインでらくらく開発プロセス管理!(実践編)
- 第18回 お決まりコードを設計書から自動生成するblancoCsv
- 第19回 Project Zeroでスクリプト+Ajaxのアジャイル開発
- 第20回 ERダイアグラムを編集するAmaterasERDでDB設計
- 第21回 Apache LDAP StudioでLDAPはもう怖くない
- 第22回 JavaScriptを書かずにAjaxを実現するjMaki
- 第23回 Mylyn&Tracでリズムに乗ってタスクを大掃除♪
- 第24回 これはすごい!? コード品質のカイゼン化プラグイン2種
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




