明日からできるプロジェクト管理(4)
単体テストの品質をチェックするには
1page|2page|3page
高野敦
2006/1/12
◆ メトリクスを計測するためのツール
品質を評価するために必要なメトリクスを前頁で説明しました。これらのメトリクスを人間が計測しても良いのですが、中には計測が困難なものやコストが多く掛かるものがあります。そのため計測するツールが開発されています。これらのツールの中からオープンソースで提供されているもののいくつかを紹介します。
● ツールで評価するサンプルプログラム
ツールを紹介する前に、ツールで評価するサンプルプログラムの説明をします。このプログラムは2つのチェックを行うメソッドを実装したUtilクラスとそのメソッドをテストするUtilTestクラスがあります。このプログラムについて、ツールでメトリクスを測ります。
・Util.java
package example.util; |
ツールによるコードレビューを実施するために、このコードにいくつかの欠陥を埋め込んであります。仕様はJavadocの形式でソースコードに記述しています。
また、テストコードは以下のとおりです。
・UtilTest.java
package example.util; |
このテストコードもUtilクラスと同様に欠陥を埋め込んであります。
● コードレビューツールにおけるツール
コードレビューは人間の手で行うことが多いですが、ツールによって行うこともできます。ここでは、ビルド時にできるレビューツール(ツールによるレビューの実施)と人間が行うレビューを支援するツールを紹介します。
○ FindBugs
- - PR -
ビルド時にFindBugsを実行するためにMavenを利用します。Mavenについては、前回の記事「ビルド管理を楽にするオープンソースツール一覧」を参照してください。MavenでFindBugsを利用するためにproject.xmlに以下の設定を行い、siteゴールを実行します。
<設定>
<dependencies>に以下のコード片を追加します。
<dependency> |
<reports>に以下のコード片を追加します。
<report>maven-jxr-plugin</report> |
FindBugsプラグインをダウンロードするために<dependency>の設定を行っています。ダウンロードプラグインを利用してダウンロードする場合この設定は必要ありません。<report>の設定としてFindBugsプラグインの設定だけではなく、Javaクロスリファレンスプラグインの設定をしています。これは、FindBugsプラグインが出力するレポートがJavaクロスリファレンスプラグインが出力するレポートをリンクしているためです。
siteゴールを実行した結果としてプロジェクトフォルダにtargetフォルダが作成され、docsフォルダの下にindex.htmlが作成されています。このHTMLを表示すると以下のようになります。
図1 Mavenのレポート(クリックすると拡大) |
この画面の左側メニューの「プロジェクトレポート」を選択して、FindBugsReportを選択するとレポート結果を見ることができます(もし日本語が化けている場合は、プロジェクトフォルダのproject.propertiesファイルにmaven.docs.outputencodingにエンコーディングを指定してください)。
図2 FindBugsレポート(クリックすると拡大) |
46行目に「esm == "ABC"」と文字列を==で比較している部分があります。このコード片は確かに問題があり、一般的に文字列の比較はequals()メソッドを利用しなければなりません。このことをFindBugsは指摘しています。
PMは、まずSummaryというところを確認し、全体状況としてどの程度の指摘があったのかを確認します。
指摘数が多い場合は、Filesを確認してどのファイルに指摘が多いのかを確認します(図の2番目の囲み)。ここでファイルに偏りがないかを「体制や作成者」の情報を基に確認します。もし偏りがある場合は、そのチームや個人に対して品質に関する何らかの手を打つ必要があります。このようにPMは、全体から修正個所へブレイクダウンし、欠陥の分布に偏りがないかを確認していきます。品質は感覚で確認することはできません。このような情報を基に判断することが重要です。
FindBugsで指摘される内容はできる限り直した方がよい内容です。このレポートを基にPMと開発者の間で修正の計画を確認していきます。開発者がどの行に問題があるかを確認する場合は、このレポートの行数をクリックすることでJavaクロスリファレンスプラグインが生成するHTML化されたソースコードのページに飛ぶことができます。
図3 クリックした結果(クリックすると拡大) |
○ Checkstyle
Checkstyleは、GNU LESSER GENERAL PUBLIC LICENSEで提供されるオープンソースツールです。FindBugsと同様にコードをレビューするツールです。FindBugsは欠陥の起こりやすいコードパターンをレビューしますが、Checkstyleはスタイルを中心としたコード規約を守っているかをレビューします。
EclipseのPluginなども提供されているので各プログラマがこのツールを利用して、随時レビューすることも可能です、ここではビルド時にレビューする方法を説明します。詳細については「コーディング規約に従わないコードを検索する」を参照してください。
ビルド時にCheckstyleを実行するためにFindBugsと同様にMavenを利用します。以下の設定をproject.xmlに行い、siteゴールを実行します。
<設定>
<report>に以下のコード片を追加します。
<report>maven-checkstyle-plugin</report> |
FindBugsと同様にCheckStyleによるレポートを参照すると、以下の図のようになります。
図4 CheckStyleによるレポートを参照すると |
このレポートによるとUtil.javaにはフォーマットなどの欠陥が41個あると指摘されています。
PMはFindBugsと同様に確認していきます。ここではデフォルトのルールセット(Sunのコーディング規約)を利用してチェックしていますが、プロジェクトによっては利用しないルールもあるかもしれないので、Checkstyleのルールファイルを調整する必要があるでしょう。
○ CodeStriker
CodeStrikerは、GNU GENERAL PUBLIC LICENSEで提供されるオープンソースのコードレビュー支援ツールです。
CodeStrikerは上の2つのツールとは異なり、ツールがコードの品質を計測するのではなく人間がレビューすることを支援するツールです。筆者は利用したことがないので簡単な紹介にとどめます。ここで紹介した意図はツールによる自動化だけではなく、人間のレビューを支援するツールがあることを強調したかったためです。
2/3 |
INDEX |
||
明日からできるプロジェクト管理(4) 単体テストの品質をチェックするには |
||
Page1 ◆ 品質の考え方 |
||
Page2 ◆ メトリクスを計測するためのツール |
||
Page3 ● 単体テスト(BlackBox)におけるツール |
IT Architect 連載記事一覧 |
キャリアアップ
スポンサーからのお知らせ
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
売上高100億円以上の企業に調査 生成AIの「マーケティング」への活用意向は?
ウイングアーク1stは、売上高100億以上の企業に勤務する部長などのマネジメント層535...
Instagramでバカ正直に「広告」を明示するとリーチが下がる? 責任者の回答は……
Instagramの責任者であるアダム・モッセーリ氏は、自身のアカウントでの情報発信シリーズ...
Xは? TikTokは? Metaは? トランプ氏勝利で笑うソーシャル、泣くソーシャル
4年ぶり2度目のトランプ政権が実現することで、主要ソーシャルメディア各社はどのような...