nDiki : パスカバレッジ

2004年6月3日 (木)

Perlプログラムのコードカバレッジ解析

真実32 充分テストをしたとプログラマが自信を持つソフトウェアでも、全パスの50〜60%程度しか網羅していない。 パス・カバレージ・アナライザのような自動化ツールを使うと、網羅率が85〜90%に上がる。しかし、100%のパスを網羅するのは不可能だ。

真実34 ツールを使わないと、不良除去はうまくいかない。デバッガはみんな使うが、カバレージ・アナライザは、ほとんど使わない。

ソフトウエア開発 55の真実と10のウソより。

ということで、Perl 用のカバレッジ分析ツールを探してみる。 CPAN にある Devel::Cover が良さそげ。

Debian BOX にインストール

 apt-get install libtest-differences-perl \
                 libpod-coverage-perl \
                 libtemplate-perl

してから Devel::Coverインストール

 dh-make-perl --cpan Devel::Cover --build
 dpkg --install libdevel-cover-perl_0.45-1_i386.deb

WiKickerコードカバレッジをチェックしてみる。

WiKickerExtUtils::MakeMaker を使ってパッケージ化しており、テストは t/*.t を使用するようになっているので、そのまま分析をする事ができる。

 perl Makefile.PL
 make
 cover -delete
 HARNESS_PERL_SWITCHES=-MDevel::Cover make test
 cover

出力はこんな感じ

 Reading database from /path/WiKicker/source/cover_db


 ---------------------------- ------ ------ ------ ------ ------ ------ ------
 File                           stmt branch   cond    sub    pod   time  total
 ---------------------------- ------ ------ ------ ------ ------ ------ ------
 blib/lib/WiKicker.pm          100.0    n/a    n/a  100.0    n/a    0.0  100.0
 ...cker/App/Configuration.pm   44.1    0.0    n/a   62.5    n/a    0.0   41.7
 ...icker/App/MarkUpAsHtml.pm   38.1    0.0    0.0   66.7    n/a    0.0   34.8
 ...CGI/AbstractController.pm   24.8    0.0    n/a   47.4    n/a    0.0   23.6
 [snip]
 ...ageHtmlFragmentVisitor.pm  100.0    n/a    n/a  100.0    n/a    0.0  100.0
 ...icker/WikiPage/WriNode.pm   96.4   83.3    n/a   88.9    n/a    0.9   93.0
 .../tDiaryFragmentVisitor.pm   32.3    0.0    n/a   33.3    n/a    0.0   29.8
 Total                          59.2   41.3   31.4   67.5  100.0  100.0   56.7
 ---------------------------- ------ ------ ------ ------ ------ ------ ------


 Writing HTML output to /path/WiKicker/source/cover_db/coverage.html ...
 done.

cover_db/coverage.html に各モジュール毎のコードカバレッジが表示される。 また、各モジュールファイル毎のレポートもHTMLで作成され、プログラムの各行毎のカバレッジがプログラムとともに表示される。

なかなかいい感じ。さすがにパスカバレッジはサポートしていない。

コードカバレッジを上げてもバグ0にはなるとは全然言えないのは承知しているが、テスト漏れを減らすための情報として結構使えそうだ。

スポンサード リンク
[ 6月3日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.051619s / load averages: 0.69, 0.49, 0.38
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker