2024/5/9
製品
カテゴリー
タグ
231 Views
DT+ガイダンス ソースコードの変更部分を対象にカバレッジを計測する
はじめに
こちらのページでは「DT+Trace」に慣れていない方向けに「カバレッジを計測する方法」についての手ほどきをまとめています。
「カバレッジ計測を始めてみたいけどイメージが湧かない」「オーバーヘッドの兼ね合いで全体には適用できない」という課題をお持ちの方は、ぜひこちらのページを参考にしてみてください。
実践の所要時間(目安):30分
なお、本ページ内では、アプリケーションのインストールや、プロジェクト・ドライバの作成、ソースコードの登録、テストポイントの挿入が既に完了している状態からの説明になります。必要に応じて「はじめてのDT+Trace」や「チュートリアル」を確認して準備をしてください。
カバレッジを計測する
DT+Traceでは、テストポイントを挿入したソースコードを実機上で動作させることで、ソースコードの各テストポイントの通過未通過が視覚的にわかります。そのうえ、取得したテストポイントの通過情報(=テストレポート)を解析すると、未通過の箇所を抽出可能です。C0/C1相当※のカバレッジ率が、実機を動かすだけでも計測できます。※ページ下部に説明あり
概要および手順
DT+Traceでカバレッジを上手に計測するためには、ターゲット(カバレッジ計測の対象となる)機器の余裕度によってある程度見極めが必要になります。テストポイント1つにしても、オーバーヘッド(通過情報の出力処理時間)がかかるため、一度に広範囲にテストポイントを入れすぎてしまうと、機器の動作に支障をきたしてしまう場合も考えられます。
そこで今回は、「自分で実装した・修正を加えたソースファイルや関数に絞ってテストポイントを挿入して、実機を動かしてみる」という範囲から始めてみましょう。テストポイントを挿入したコードを使ってテストケースなどを実施してみて、通過未通過の確認をするところをゴールにします。
テストポイントの無効化
一度現状のテストポイントを無効化して、必要な部分のみテストポイントを有効化します。フォルダビュー上で右クリック > 全てのテストポイントを無効にする より一括で無効化できます。
カバレッジ計測の対象とするソースファイルや関数を決めてテストポイントを有効化する
DT+Traceアプリケーション上の「フォルダビュー」より、対象となるソースコードを開いてください。対象とするファイル名もしくは関数名の横の四角のボックスをクリックすると、[テストポイント種別指定]画面が開きますので、[全て]にチェックを入れます。
有効無効状態の更新をします
チェックボックスの操作が完了したら、[テスト計画]メニュー > テストポイント有効無効状態の更新 の操作が必要です。この操作を忘れずに行います。
該当のソースコードを開きなおすと、指定したテストポイントの色のみ赤になり、指定していないテストポイントの色がグレーになります。
ソースコードのビルド・ターゲットへの書き込み、テストレポートの収集
普段使っている開発環境でテストポイントが挿入された環境をビルド・ターゲットへの書き込みを行います。書き込み後はチュートリアルと同様にテストレポートを収集します。
取得したデータの解析
データ取得後は、[レポート解析]メニュー > [レポートデータの解析] より、取得したレポートデータを解析します。解析すると、テストレポートの並びでいくつかタブが開きます。ココでは[カバレッジレポート]を使用します。
解析されたカバレッジレポートを確認し、C0カバレッジが100%になっているかを確かめましょう。100%になっていない場合はその関数をダブルクリックすると、未通過TP(テストポイント)リストが表示されます。このリストはレポート取得中に通過しなかったテストポイントが一覧で表示されます。
項目をダブルクリックすると、選択したテストポイントの位置にソースコードビューがジャンプします。周辺コードを確認して、「なぜ通過しなかったか(=テスト漏れではないか)」「通過しないことが妥当であるか」「使われていないコードではないか」といった観点で確認やレビューをしましょう。
詳細はこちら⇒チュートリアル – カバレッジの確認
C1カバレッジが表示されない場合
C1カバレッジはデフォルトの設定では解析されません。環境設定を変更する必要があります。環境設定を変更して再解析することで既に取得済みのテストレポートでも解析できます。再度データを収集しなくても大丈夫です。
詳細はこちら⇒Q&A – C1カバレッジを「カバレッジレポート上に表示させたい」
参考
DT+Traceで計測できるカバレッジの種類と概要
C0カバレッジ
C0カバレッジとは、”命令網羅”や”Statement Coverage”と呼ばれることもあり、命令文(実行文)に着目したカバレッジです。ソースコード上の命令文が実行されているかどうかがポイントになります。記述されているすべての命令文を1度でも実行されている場合に、C0カバレッジは100%という結果になります。DT+Traceにおいては、テストポイントがいくつ通過したかで割合を算出しています。
C1カバレッジ
C1カバレッジとは、”分岐網羅”や”Branch Coverage”と呼ばれることもあり、主に条件文に着目したカバレッジです。ソースコード上の条件文における真偽が網羅されているかがポイントになります。記述されている条件文の真偽が1度でも実行されている場合に、C1カバレッジは100%という結果になります。DT+Traceにおいては、分岐の方向に対して、いくつ通過しているかで割合を算出しています。
応用編 ~カバレッジ専用ドライバ~
DT+Traceには、"カバレッジ専用ドライバ"というものがあります。通過情報をターゲット上でbit管理し、実動作に影響がないタイミングでbitの情報を出力する、オーバーヘッドを最小限に抑えたものになります。通常の通過情報を出力するドライバではなく、カバレッジ専用のドライバに切り替えてデータを取得します。
トラブルシュート
-
正常にデータが取れない(実機は問題なく動作している)
-
テストポイントの挿入されたソースコードが実行されているか確認しましょう。
-
ターゲットとの接続が問題がないか確認しましょう。
-
-
実機が動かなくなった/動作が不安定になった
- テストポイントの数が多すぎる可能性があります。関数を減らす・割り込み処理を対象外にするなど、数を減らしてお試しください。
- 汎用ポート接続を使用している場合、高速テストポイントもお試しください。
-
GPIO接続をご使用で不正なデータ(16進数が表示されているなど)が取得されている。
- ドライバの処理や接続の見直しが必要な可能性があります。「16進数などの異常データが表示される、もしくはデータが取得できない」をご確認下さい。