このブログについて

ソフトウェア開発におけるエラーの予防やプロジェクト管理、品質管理を支援するParasoft製品のTIPSなどを、国内総販売代理店テクマトリックスのサポートスタッフが紹介しています。

2014年6月12日木曜日

テストを複数回実施したカバレッジのログをマージする

■テストを複数回実施したカバレッジのログをマージすることは可能?

はい、可能です。
C++testのテスト実行時のカバレッジのログは、簡単にマージすることが出来ます。


単体テストを複数回に分けて実施した際、テストの結果・カバレッジのログを手動でマージしていませんか?

C++testのデフォルト設定では、実施した単体テストの回数分だけテストログが分割されます。今回ご紹介する内容は、それらのログを自動でマージする方法です。
自動でログをマージできれば、1つにまとまったテスト結果レポートを効率的に作成することが出来ます。

それでは具体的な設定例をご紹介いたします。

■ログファイルについて

C++testでは、以下の2つのログファイルにテスト結果情報とカバレッジ情報を保持しています。

  • テスト結果[cpptest_results.tlog]
  • テストの成功/失敗の情報を含むログファイル

  • カバレッジ[cpptest_results.clog]
  • テスト実行時のソースコードのカバレッジの情報を含むログファイル
     
これら2つのログファイルはテスト実行時に追記する形式として生成されます。
C++testデフォルトの設定では、テスト毎に2つのログファイルを削除する設定となっているため、毎回書き換えられているように見えます。
そのため、2つのログファイル(cpptest_results.tlog、cpptest_results.clog)を削除せず追記するように設定すれば、ログファイルのマージが可能になります。

■設定(テストコンフィギュレーション)の変更

以下の方法で、ログファイルを削除する設定を変更します。
単体テスト、及びアプリケーションモニタリング 用のテストコンフィギュレーションのダイアログより、処理フローを参照します。
    [実行]タブ → [全般]タブ → [テスト実行フロー]右の[編集]ボタンの処理フロー
処理フロー内に以下のような"RemoveFileStep"といったログファイルを削除する処理が記載されています。


このファイルを削除する処理を処理フローから削除することで、テスト結果とカバレッジのログをテスト毎に追加することができます。

■活用例

以下にカバレッジのマージの活用例をご紹介します

◆単体テストのカバレッジレポートをマージする
通常、上記のカバレッジをマージする設定を行わずに複数のテストを行った場合、GUI上では、カバレッジはマージされますが、レポートの出力結果は最後に実行したテスト結果のみになります。
  • テストケース1(calcFare関数のテスト)を実行し、GUI上でカバレッジを確認します
  • テストケース2(getFareInt関数のテスト)を実行し、1同様にカバレッジを確認します
  • GUI上ではテストケース1の結果も反映されカバレッジがマージされています
  • ですが、上記の実行結果のレポートを見てみますと
  • 結果がマージされておらず、最後の実行結果だけレポートされていることがわかります
  • ここで、カバレッジをマージする設定を実施後、再度同様にテストを実行し、レポートを出力すると
  • 上記のように、レポートもマージされたものが出力できます

◆アプリケーションモニタリングの結果をマージする
アプリケーションモニタリング の機能を使うことで、操作別のカバレッジの集計を取ることが出来ます。
例えば、以下のよう操作を実施したとします。
  1. アプリケーションを動作させ、操作1を実行
    →操作1実行時のカバレッジ情報を取得
  2. アプリケーションを動作させ、操作2を実行
    →操作2実行時のカバレッジ情報を取得
このように、操作1を実行した時のカバレッジと操作2を実行した時のカバレッジ情報をアプリケーションモニタリング機能で取得し、カバレッジの結果をマージすることで、最終的には実行された操作の分だけ、tlog、clogに結果が追記され、集計されたカバレッジを見ることができます。

■まとめ

いかかでしたでしょうか?
単体テストの結果ログファイルをマージすることで、複数の実行結果やカバレッジレポートを一つにまとめることができました。
実施するテストの内容によっては、一括で実行できない場合もありますので、そのようなシーンでもC++testを効率的にご活用いただけると思います。

今回ご紹介した内容については、こちらのユーザーページFAQで設定ファイル等のサンプルを公開する予定です。
その他にもユーザページでは C++test の便利な使い方をご紹介しています。是非、ご活用ください。