【Linuxにおけるカバレッジテスト】

■gcovを使用したカバレッジテストについて

 □gcovとは
  C言語で書かれたプログラムのカバレッジを測定するツールで、gccに付属

 □gcovのインストール
  不要。gccに付属

 □ざっくり使い方
  ①測定するテストコードをコンパイルする際に、-coverageを付加すると、gcov用オブジェクトファイル(*.gcno)が生成される。
   但し、古いバージョンのgcc(3.4.6ではこちらに該当)では-fprofile-arcs -ftest-coverage と書く必要がある(以下についても同様)
  ②テストアプリを実行すると、カバレッジのログを記録した、*.gcdaファイルが生成される
  ③gcovを実行すると、カバレッジが表示される


※ライブラリ側を測定したい場合、ライブラリのコンパイルオプションに-coverageを付加し、
 アプリケーション側のリンカオプションにも-coverageを付加することで、成功した。


■lcovについて


 □lcovとは
  gcovで生成されたカバレッジ測定結果をHTML形式で見やすくしてくれる


 □lcovのインストール
  http://ltp.sourceforge.net/coverage/lcov.php より
  lcov-1.7.tar.gz(2009/09時点)をダウンロードしてきて展開する。
  binフォルダの中にlcovなどのコマンドが入っているので、適宜配置する


 □ざっくり使い方
  ①./lcov -c -d [作業ディレクトリ] -o [出力infoオブジェクト名] コマンド実行
   例)> ./lcov -c -d . -o hoge.info
  ②①を実行すると.infoが生成される
  ③./genhtml -o [出力ディレクトリ] [infoファイル] コマンド実行
   例)> ./genhtml -o output hoge.info
  ④③を実行するとindex.htmlともろもろのファイルが生成される


 □【gcov実行後】

# ll
--------------------------------------------------
hoge.cpp ソースファイル
hoge.cpp.gcov gcov実行結果ファイル
hoge.gcda カバレッジログファイル
hoge.gcno カバレッジ用オブジェクトファイル
hoge.o オブジェクトファイル
hoge 実行ファイル
lcov lcov実行ファイル
genhtml HTML出力実行ファイル
--------------------------------------------------

# ./lcov -c -d . -o hoge.info
# Capturing coverage data from .
# Found gcov version: 4.1.2
# Scanning . for .gcda files ...
# Found 1 data files in .
# Processing ./hoge.gcda
# Finished . info-file creation

# ./genhtml -o output hoge.info
# Reading data file hoge.info
# Found 1 entries.
# Found common filename prefix "/home/work/xxx"
# Writing .css and .png files.
# Generation output.
# Processing file hoge.cpp
# Writing directory view page.
# Overall coverage rate:
# lines......: 56.0% (315 of 563 lines)
# functions..: 86.4% (19 of 22 functions)
 □出力結果の特徴
  ・通過していない行は赤いラインで強調表示される
  ・通過している行の左には何回通過したかの数字が表示される
  ・カバレッジ具合がグラフィカルなバーで表示される
   (網羅が少ないほうから赤・黄色・緑で表示されるのでテストが甘いところも良く分かる)


 ※ http://ltp.sourceforge.net/coverage/lcov.php より
  lcov-1.7.tar.gz(2009/09時点)をダウンロードしてきて、
  中のexampleが参考になる


知識ゼロから学ぶ ソフトウェアテスト/高橋 寿一
¥2,520
Amazon.co.jp