CoolなEclipseプラグイン(24)
これはすごい!?
コード品質のカイゼン化プラグイン2種
岡本隆史
2008/2/6
ソフトウェアの品質と保守性を向上させるために、テストケースの作成は重要です。しかしながら、時間がない、面倒だなどの理由によりユニット(単体)テストが省略されることはしばしばあります。
また、ソフトウェアの修正や仕様変更を考慮すると、保守性の高い(分かりやすい/読みやすい)コードにする必要があります。
本稿では、ソースコードからJUnitをベースとしたたテストケースを自動的に生成する「JUnit Factory」とコードの保守性の指標であるCRAP(Change Risk Anti Pattern)を計測する「Crap4j」をご紹介します。
図1 JUnit Factoryのページ |
図2 Crap4jのページ |
テストケースを自動生成するJUnit Factoryとは?
JUnit Factoryはソースコードからテストケースを自動生成し、しかも生成されたテストケースはモックオブジェクトやprivateフィールドのアクセッサなどが駆使され、高いカバレッジ(テストケースの網羅度)をカバーするというまさに夢のようなテストコード生成サービスです。
JUnit Factoryを利用するためのEclipseプラグインが提供されており、Eclipse上から簡単にテストケースを生成できます。
JUnit Factoryは次のような特徴を持ちます。
■ 特徴【1】テストケース生成をサービスとして提供
JUnit Factoryはテストケース生成サービスとして、JUnit Factoryのサーバ上で提供されています。各開発者の端末上でテストケースを生成しないので、テストケース生成中はマシンリソースを消費してほかの作業ができなくなるということはありません。テストケースを生成している間、別の作業ができます。
図3 JUnit Factoryの概念図 |
■ 特徴【2】サービスは無料で提供
テストケースを生成するサービスは、JUnit Factory上のWebページで公開されており、無料で利用できます。
■ 特徴【3】Eclipseプラグインを提供
JUnit Factoryは、Web上でも利用できますが、Eclipseプラグインも提供されており、プラグインを使って簡単にテストケース生成サービスを利用できます。
また、プラグインでは、テストの実行、カバレッジ測定、ダッシュボードの生成などもサポートされます。
■ 特徴【4】JUnitをベースとしたテストケースを生成
テスティングフレームワークのJUnitをベースとしたテストケースを生成するので、開発者になじみやすいです。
また、専用のAntタスクが無償で提供されており、Antでテストを実行することもできます。
編集部注:Antについて詳しく知りたい読者は、連載「現場に活かす Jakarta Project」の第2回「AntでJavaのビルドを簡単にする」をご参照ください。
JUnit Factoryを使ったテストケースの生成例
さて、ここまで読んで「テストケースの自動生成なんて、使えないんじゃないか?」と疑問を持つ方もいらっしゃるでしょう。簡単にJUnit Factoryによるテストケースの生成の例を見てみましょう。
例えば、次のようなCheckNumberというクラスに2けたの数字かどうかチェックするlen2というメソッドがあったとします。
public class CheckNumber { |
このlen2メソッドに対して、JUnit Factoryは次のようなテストケースを生成します。
public void testLen2() throws Throwable { |
生成されたテストコードを見ると、境界値付近(10、99)で値を変えたテストケースを生成し、その返却値をチェックしているのが分かると思います。
上記の例では、引数にプリミティブ型を利用していますが、独自クラスを利用した場合は、インスタンスやモックを利用したコードが生成されます。簡単な例の場合、このように非常に分かりやすいテストケースを生成できます。
■ JUnit Factoryのセットアップ
下記のアップデートサイトからプラグインをダウンロード、インストールします。
- http://www.junitfactory.com/update/
インストールするフィーチャーは、図4のとおりです。
図4 インストールするフィーチャーの選択 |
JUnit Factoryは、Eclipseから利用する場合、JUnit Factory Serverのアカウントが必要です。JUnit Factoryのインストールが完了したら、アカウントを作成しましょう。アカウントは下記のURLから作成します。
- http://www.junitfactory.com/account/create/
メールアドレス、名、姓、パスワードを入力し、「legal stuffを確認」にチェックを入れて、アカウント作成ボタンを押すとアカウントが作成されます。
図5 アカウント作成 |
インストールが完了したら、Eclipse[メニュー]の[設定]→[Agitar]→[サーバー]でサーバに接続する設定を行います(図6)。
図6 JUnit Factoryのサーバ設定 |
JUnit Factoryで提供しているサービスを利用する場合は、次のように設定します。
表1 JUnit Factoryのサーバ設定のパラメータ | ||||||||||
|
HTTPプロキシは必要に応じて設定してください。以上で準備は完了です。
次のページからJUnit Factoryを使ったテストケースの自動生成の仕方を具体的に解説します。
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全記事一覧 |
- これはすごい!? コード品質のカイゼン化プラグイン2種 (2008/2/6)
JUnitをベースとしたテストケースを自動生成するJUnit Factoryと、コードの保守性(どれくらい読みにくいか)を数値で計れるCrap4jを紹介 - Java、.NET、Ajax開発の“銀の弾丸”オープンソース? (2008/2/1)
先日オープンソース化されたNTTデータの社内フレームワーク/開発プロセスの概要や使い方などをいち早く解説 - Tomcatのセキュリティとリスクの基本分かってる? (2008/1/28)
業務でTomcatを使う際に安全面を気にしていますか? どんなリスクがあってどうすれば解決できるかのヒントを教えましょう - あなたのEJBシステム遅くないですか? (2008/1/24)
「自分がかかわったEJBシステムが遅い!」とお嘆きの方に朗報です 。これを読めばユーザーに怒られずにすみますよ
|
|
スポンサーからのお知らせ
- - PR -
お勧め求人情報
**先週の人気講座ランキング**
windows編〜
◆ | New! これから伸びるコンサルタント分野は何か? 〜エンジニア・キャリア進化論(第3回)〜 |
◆ | New! 「ケーブル挿して電源ON!」ほぼ完了!? “めっちゃお手軽”メールセキュリティ |
◆ | New! ■ボトルネックバスターズ 2■ 【最終回】 彗星寺の威厳は彗星のごとく消えていった…… |
◆ | MyEclipse ビジュアルJSPデザイナーなら WYSIWYGエディタだから簡単Webページ作成 |
◆ | x86サーバなるほど相談室 開設! その悩み、ペディアくんがお答えします。 |
◆ | SPECjbb2005にて驚異的な実行速度! このベンチマークテスト結果を見よ! |
◆ | 開発で重要な要件定義は、転職でも同じ プロが教える、転職活動の要件定義とは |
◆ | ¥も$も対応する“国際デビッドカード” 止まらないサーバが実現したシステムは? |
◆ | VB.NETによる開発のスタイルを変える 専用O/Rマッパー導入のメリットとは? |
◆ | 「わしは知らんかった」では済まされない 記録保管として電子メールが持つ意義とは |
◆ | データマイニングを武器に、C型肝炎 ウイルスと戦う医師。その治療の行方は? |
◆ | とにかく人が足りない「組み込み開発業界」 今こそ、キャリアチェンジのチャンス! |
◆ | “予防”と“発見”で強化する内部統制 ――@IT主催内部統制セミナー詳細 |
◆ | 「番次郎さん、WSSが使えそうです!」 “いぶき”がついに、難題突破口を発見! |
◆ | ORACLE MASTER取得者へ林優子氏が指南! 「次に身に付けるべきスキルとは……」 |
◆ | フロントシステムの4つの課題を解決! 企業システムでAjaxが実用化段階に |