タダでソフト開発の生産性と品質を上げる方法(7):高機能な単体テストツール「GoogleTest」を使いこなす(その2):山浦恒央の“くみこみ”な話(97)(2/3 ページ)
「タダでソフト開発の生産性と品質を上げる方法」の第7回。グーグル(Google)製の単体テストフレームワーク「GoogleTest」の高度な機能のうち、今回は「パスカバレッジ」を取り上げます。
2.1 設定
カバレッジを実行するには、eclipseの設定が必要です。まずは、本コラムの第95回の「3.3 eclipseのダウンロード」の「図6 Eclipse起動画面」をご覧ください。画面左側にある「プロジェクトエクスプローラ」を右クリックし、「プロパティー(R)」を選択します。選択すると、図1が現れます。
図1は、プロパティ画面です。「Cygwin C++ Compiler」の「デバッグ」を選択し、「Generate gcov information」にチェックし、「OK」を選択します。これで、設定は完了です。
2.2 カバレッジの実行
今回は、以下のリスト1に挙げた例題プログラムを取り上げ、ソースコードのカバレッジを実行して、網羅率を測定してみましょう。このプログラムは、前回の第96回のリスト2で示したプログラムを簡略化したものです(Carという車のクラスがあり、Addメソッドを呼び出し、ガソリン量、TotalGasを加える簡単な処理をしています)。そちらも合わせて参照してください。
#include <gtest/gtest.h> class Car{ public: int TotalGas; void Init(){ TotalGas = 0; }; void Add(int amount){ if (amount >= 0 && amount <= 40) TotalGas += amount; }; }; int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } TEST(CarTest,NotTriangle){ Car car; car.Init(); EXPECT_EQ(0,car.TotalGas); car.Add(-1); }
このプログラムをビルドし、実行すると、「プロジェクトエクスプローラ」に「.gcno」ファイルができます。図2(左)を確認ください。
図2(左)の「Add.gcno」ファイルをダブルクリックすると、図2(右)の「Gcov-Open coverage results...」画面が現れます。「Show coverage for the whole selected binary file」をチェックして、「OK」を押すと、図3のように、ソースコードに色が付きます。
図3は、プログラムの実行箇所をカラーリングしたものです。なお、本コラムの設定では、網羅基準はC0です。緑が実行したパスで、赤が未実行パスを示します。図3を見ると、Addメソッドが赤になっており、未実行であることが視覚的に分かります。
また、カバレッジ率の計測結果は、ログ画面から確認できます(図4)。
図4は、実行したパスの網羅率の計測結果を示しています。テストの対象箇所は「Add.cc」ですので、それ以外は無視してください。「Add.cc」の合計行数が21行で、「Instrumente...」(計測可能な行数)は12行、Executed Lines(実行済みの行数)は13行となっています。12/13なので、Coverage%(合計)は、「92.31%」です。なお、テスト項目を追加すると「Add.cc」が100%となりますので、確認してください。
Copyright © ITmedia, Inc. All Rights Reserved.