チュートリアル

カバレッジ専用ドライバ

課題

カバレッジ測定をするために、テストポイントを複数箇所に自動挿入したが、
オーバーヘッドの影響でターゲットが動作しなかった。
ファイル書き出しで、トレースデータを溜めておくRAM容量が小さいために、
テストポイントの挿入箇所を調整して、カバレッジ計測をしている。

解決方法

テストポイント通過で出力されるトレース情報をbit単位で管理し、データを圧縮します。
従来方式より無駄なくRAMに取り溜めてからデータ取得します。
ターゲット機器の動作に影響を与えない軽負荷な出力処理が可能です。

DT10でプロジェクト新規作成/テストポイント挿入

DTヘッダの変換とDTTestPointCoutDefine.hの生成

_TP_SaveCoverageData関数の実装

ビルド/デプロイ

CoverageData.datの生成

DT10でインポート

DT10でカバレッジ確認

効果

一度通過したテストポイントのデータは出力しないため、出力にかかるオーバーヘッドを減らせます。
また、ログを保存する PC 側のハードディスクの容量も減らせます。
大規模な環境でのカバレッジ計測において、ログデータの容量を抑えた運用ができます。

制限事項

  • DTヘッダを生成するC/C++で使用できます。
  • 接続方式はファイル書き出し接続になります。
  • カバレッジを目的としたドライバのため、パフォーマンス測定や実行経路の確認などにはご使用できません。
  • C1カバレッジはC1カバレッジ(クイック)の場合は算出可能です。

※ C1カバレッジ(クイック)は環境設定の「ソースコードの分岐解析及びルート推定をしない」にチェックを付けて解析します。
C1カバレッジ(クイック)の算出方法につきましては、アプリヘルプをご参照ください。

カバレッジ専用ドライバ0

ドライバのカスタム方法

1. サンプルドライバのダウンロード
対応OS 接続方式 言語 イベントID出力方式 ダウンロード
Windows/Linux ファイル書き出し C/C++ ダウンロード
2. プロジェクト新規作成、プロジェクト設定

プロジェクト新規作成、またはプロジェクト設定で「カバレッジ専用ドライバを利用する」を”True”に変更します。
カバレッジ専用ドライバは、ターゲットにメモリバッファを確保するため、利用する前にバッファサイズを決定する必要があります。
DTヘッダ更新時にDTTestPointCoutDefine.hヘッダを生成します。
ヘッダの作成場所は、「カバレッジ専用ドライバを利用する」がTureのときのみ表示される、
「テストポイント数定義ヘッダの保存フォルダ」欄で指定します。
保存場所のデフォルトは、プロジェクトファイルと同じフォルダになります。
保存フォルダはカスタマイズしたドライバと同じ場所を指定してください。

プロジェクト新規作成

カバレッジ専用ドライバ1

プロジェクト設定

カバレッジ専用ドライバ2

3. テストポイント再定義

テストポイントの自動挿入など、ヘッダ構成に影響がある項目が変更される場合に、
テストポイントの再定義が行われます。

テストポイント再定義の際に以下のメッセージが表示された場合は、
FAQをご参照ください。

「カバレッジ専用ドライバ用のテストポイントマクロ定義を生成できないソースファイルがありました。これらは通常の定義でDTヘッダを生成しました。」

「テストポイント数定義ヘッダの保存フォルダが見つからないため、プロジェクトファイルと同じフォルダにテストポイント数定義ヘッダを保存しました。」

テストポイントの再定義が終わったら以下のように変わります。
_TP_BusOutが_TP_BusOutBufに変更となり、引数が1つになる。

[テストポイント再定義前]
カバレッジ専用ドライバ3

[テストポイント再定義後]

4.ドライバのカスタマイズ

使用する定義を下記のように変更します。

#include "DTTestPointCountDefine.h"

再定義後、生成されるDTTestPointCountDefine.hの場所に合わせて指定してください。

5._TP_SaveCoverageData関数の実装

溜まったテストポイントの通過情報を出力する関数として_TP_SaveCoverageData関数を実装し、
その関数を呼び出す必要があります。
サンプルドライバ内にはご用意していますので、実行させるターゲットプログラムの任意の場所で
_TP_SaveCoverageData関数をコールするようにターゲットのソースコードに追加します。

例として、ターゲット機器の操作ボタンを押した時などの外部トリガーを発生させやすい箇所や、
定周期で実行される関数に実装します。
※登録しているソースファイルに実装した場合は、再度DTプロジェクトを開き直して再定義を行ってください。

6.CoverageData.datの生成

ビルドを行いターゲットを動作させます。
_TP_SaveCoverageData関数が呼び出されたらCoverageData.datがドライバと同じ場所に生成されます。

カバレッジ専用ドライバ5

7.DT10でインポート

生成されたConverageData.datファイルをDT10でインポートをします。
アプリメニューの[ファイル]→[インポート]→[「ファイル書き出し」で取得したレポートデータ…]
を選択します。

カバレッジ専用ドライバ6

以下のダイアログが表示されますので、CoverageData.datを指定します。

カバレッジ専用ドライバ7

テストレポートが表示されます。
表示されるデータは、ソースコード上にあるテストポイントの上からの順番で、通過したテストポイントだけとなります。
実行された順序でテストレポートに表示されませんのでご注意ください。

カバレッジ専用ドライバ8

通過した情報から C0 カバレッジを算出するため、DT10 アプリケーションの[レポート解析]→[レポートデータの解析]を行い、カバレッジレポートを表示させます。

カバレッジ専用ドライバ9