2006/02/27

Javaでカバレッジテスト


dJUnitでカバレッジテスト

あきぴーさんの「プログラマの思索」というブログで、Javaでカバレッジテストを行うことができる、dJUnitというeclipseのプラグインが紹介されています。

カバレッジテストというのは、テストプログラムを実行した結果、テスト対象のプログラムのコードが、どれだけ実行されたかを測定するテストです。カバレッジについての詳細は、こちらをご覧ください。

このツールにより、評価を行うことができるのは、C1網羅(条件網羅)C0網羅(命令網羅)です。一般的には、C0網羅は100%になるよう単体テストを行うべき、といわれているようです。その上の、C1網羅(分岐網羅)(条件網羅)も100%にすべきなようです。

※説明が間違ってました。通りすがりさん、ご指摘ありがとうございます!

現実的には、C0網羅の100%達成は難しいですが、100%を目指すようにテストをすれば、カバレッジテストを行う前よりは、かなりプログラムの品質があがります。

カバレッジテストを行うためには、JUnitなどのテストツールを導入する必要がありますが、テストツールとカバレッジテストを組み合わせると、確実に品質があがると思います。

実際に、私も、今のプロジェクトに、テストツールとカバレッジテストを取り入れましたが、なかなかいい感じです。

プログラムの品質が上がると、顧客の信頼度が上がることもありますが、何よりも自分たちが作成したプログラムに自信を持てるようになるのが大きいです。しかも、リリース後のトラブル対応が少なくなるのだから、心の平安のためにも、やらない手はないと思います。

.NETでカバレッジテストをするなら、NCoverというツールがあります。実際には、Visual Studio .NETの中でNCoverを実行を行うことができる、TestDriven.NETを使うといいと思います。

TestDriven.NETは、Visual Studio .NETの中で簡単にNUnitを実行できるツールですが、最近のバージョンでは、NCoverを実行して、さらにその結果を画面で表示できるようになったので、かなり便利になりました。

カバレッジテストをやったことがない方は、是非試してみて欲しいですね。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

カバレッジテスト、非常に有効で私も使っています。ただし、網羅率が上がったからといって本当に品質が向上するかはちょっと怪しいところがあります。なぜなら網羅率を上げるためだけのテストケースを作成することが可能だからです。信頼性を高めるには網羅率とともに、テストケースの充実が不可欠かと思います。

kawaさん、コメントありがとうございます。

現在のプロジェクトでは、網羅率もそうですが、それに合わせて、同値分割・境界値分析・エラー推測によってテストケースを作成しています。ここまでやると、割合品質のよい単体テストになるんじゃないかと思います。それにあわせて、FxCopを使用して、コーディング規約のチェックも行ってます。

通りすがりです。
とても気になったので一言だけ。
C1網羅(条件網羅)とありますが、
C1:分岐網羅
C2:条件網羅
が正しいと思います。
C1とC2では全くテストケース数が違いますよ。
単体レベルでの品質に重点を置くならC2が必須になると思います。
あとdJUnitではC1までしかサポートしていない気がしました。

通りすがりさん、ご指摘ありがとうございます!
早速、間違いを訂正いたしました。
間違いを教えていただき、ありがとうございました。

C0: 命令網羅
C1: 分岐網羅
C2: 条件網羅

Ed Miller

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから