2022/8/15
製品
カテゴリー
タグ
11764 Views
[ファイル書き出し接続]カバレッジ専用ドライバ
Contents
課題
カバレッジ測定をするために、テストポイントを複数箇所に自動挿入したが、
オーバーヘッドの影響でターゲットが動作しなかった。
ファイル書き出しで、トレースデータを溜めておくRAM容量が小さいために、
テストポイントの挿入箇所を調整して、カバレッジ計測をしている。
解決方法
テストポイント通過で出力されるトレース情報をbit単位で管理し、データを圧縮します。
従来方式より無駄なくRAMに取り溜めてからデータ取得します。
ターゲット機器の動作に影響を与えない軽負荷な出力処理が可能です。
効果
一度通過したテストポイントのデータは出力しないため、出力にかかるオーバーヘッドを減らせます。
また、ログを保存するPC側のハードディスクの容量も減らせます。
大規模な環境でのカバレッジ計測において、ログデータの容量を抑えた運用ができます。
制限事項
-
DTヘッダを生成するC/C++で使用できます。
-
接続方式はファイル書き出し接続になります。
-
カバレッジを目的としたドライバのため、パフォーマンス測定や実行経路の確認などにはご使用できません。
-
C1カバレッジはC1カバレッジ(クイック)の場合は算出可能です。
- C1カバレッジ(クイック)は環境設定の「ソースコードの分岐解析及びルート推定をしない」にチェックをつけて解析します。
- C1カバレッジ(クイック)の算出方法はDT+Traceアプリのヘルプをご参照ください。
プロジェクト新規作成、プロジェクト設定
プロジェクト新規作成、またはプロジェクト設定で「カバレッジ専用ドライバを利用する」を”True”に変更します。
カバレッジ専用ドライバは、ターゲットにメモリバッファを確保するため、利用する前にバッファサイズを決定する必要があります。
DTヘッダ更新時にDTTestPointCoutDefine.hヘッダを生成します。
ヘッダの作成場所は、「カバレッジ専用ドライバを利用する」がTureのときのみ表示される、
「テストポイント数定義ヘッダの保存フォルダ」欄で指定します。
保存場所のデフォルトは、プロジェクトファイルと同じフォルダになります。
保存フォルダはカスタマイズしたドライバと同じ場所を指定してください。
テストポイント再定義
テストポイントの自動挿入など、ヘッダ構成に影響がある項目が変更される場合にテストポイントの再定義が行われます。
テストポイントの再定義の際に以下のメッセージが表示された場合は、以下のFAQをご参照ください。
テストポイントの再定義が終わったら以下のように変わり、_TP_BusOutが_TP_BusOutBufに変更となり、引数が1つになります。
ドライバのカスタマイズ
サンプルドライバのダウンロード
対応OS | 接続方式 | 言語 | イベントID出力方式 | ダウンロード |
---|---|---|---|---|
Windows/Linux | ファイル書き出し | C/C++ | ダウンロード |
サンプルドライバのカスタマイズ
dt_datawriting_drv_cov.cppを環境に合わせてカスタイマイズします。
使用する定義を下記のように変更します。
#include "DTTestPointCountDefine.h"
再定義後、生成されるDTTestPointCountDefine.hの場所に合わせて指定してください。
_TP_SaveCoverageData関数の実装
溜まったテストポイントの通過情報を出力する関数として_TP_SaveCoverageData関数を実装し、その関数を呼び出す必要があります。
サンプルドライバ内にはご用意していますので、実行させるターゲットプログラムの任意の場所で_TP_SaveCoverageData関数をコールするようにターゲットのソースコードに追加します。
例として、ターゲット機器の操作ボタンを押した時などの外部トリガーを発生させやすい箇所や、定周期で実行される関数に実装します。
※登録しているソースファイルに実装した場合は、再度DTプロジェクトを開き直して再定義を行ってください。
CoverageData.datの生成
ビルドを行いターゲットを動作させます。
_TP_SaveCoverageData関数が呼び出されたらCoverageData.datがドライバと同じ場所に生成されます。
DT+Traceでインポート
生成されたCoverageData.datファイルをDT+Traceでインポートします。
アプリメニューの[ファイル]→[インポート]→[「ファイル書き出し」で取得したレポートデータ…]を選択します。
以下のダイアログが表示されますので、CoverageData.datを指定します。
テストレポートが表示されます。
表示されるデータは、ソースコード上にあるテストポイントの上から順番で、通過したテストポイントだけとなります。
実行された順序でテストレポートに表示されませんので、ご注意ください。
通過した情報からC0カバレッジを算出するため、DT+Traceアプリケーションの[レポート解析]→[レポートデータの解析]を行い、カバレッジレポートを表示させます。