ダミー関数を使った検証

Rev:1.00

ダミー関数を使った検証
カバレッジマスターwinAMS

Ver3.3 以降

Revision 0.00 2011.09.12
Revision 1.00 2015.12.22

ガイオ・テクノロジー株式会社

GAIO TECHNOLOGY

Page: 1/10

Rev:1.00

ダミー関数を使った検証

HistoryRev.

DateDescription

2011.09.12

初版

2015.12.01

サンプルコードを差し替え

PREPARED

StatusForeword
本ドキュメントは、一部のマイコン開発環境で検証対象関数の制御やテスト変数の設定が不可能になる場合に、ダミー関数を使用してその制約を回避する方法を、具体的なサンプルコードを用いて説明するものです。
http://www.gaio.co.jp/support/user/faq/winams/faq_014_03.html

GAIO TECHNOLOGY

Page: 2/10

ダミー関数を使った検証

Rev:1.00

Contents123

ダミー関数 ........................................................................................................ 4
テストデータの作成 ............................................................................................. 7
カバレッジ計測結果と結果報告書について .................................................................. 9

GAIO TECHNOLOGY

Page: 3/10

ダミー関数を使った検証

Rev:1.00

1 ダミー関数
winAMS で検証を行うアプリケーション（C プログラム）は、通常単体テスト用にプログラムを変更する必要はありませんが、一部のマイコン開発環境では、オブジェクトファイルに含まれるデバッグ情報が System-G で取り扱う情報と合わないため、winAMS プロセスから、検証対象とする関数の実行制御（関数 CALL や、関数の終了判断）が不可能な場合や、関数の引き数にテストデータを設定出来ないことがあります。
このようなケースでも検証を実現するために、ダミー関数（デバッグ用）による検証手法を提供しています。ダミー関数では、検証対象とする関数を呼び出す関数を作成します。
winAMS は、「モジュールテスト用 CSV」を使用して、ダミー関数のテストを実施する事で、評価対象の関数をテストします。

GAIO TECHNOLOGY

Page: 4/10

ダミー関数を使った検証

Rev:1.00

ダミー関数の作成方法
ダミー関数はプログラムソースに直接記述しても構いませんが、実ソースファイルに手を入れることは、品質を保持する上であまり好ましいことではありません。デバッグ用のソースファイル（例: dummy.c）をプログラムソースファイルとは別に作成して、その中にダミー関数を記述
す る こ と を お 勧 め し ま す 。 下 記 は 、 検 証 対 象 と な る 関 数 func1() を 、 ダ ミ ー 関 数
dummy_for_func1()を使用して検証する場合の例です。
プログラムソースファイル(test.c)#include "test.h"
ULL func1(ULL a, int b){
ULL retVal;
if (a.h < a.l) {retVal.h = 0;
retVal.l = 0;
} else {retVal.h = a.h;
retVal.l = a.l + (unsigned long)b;}
return retVal;}

ダミー関数用ソースファイル(dummy.c)#include "test.h"unsigned long higher;
unsigned long lower;
int bbb;
unsigned long ret_h;
unsigned long ret_l;
ULL func1(ULL a, int b);
void dummy_for_func1(void) /* ダミー関数 */{ULL aaa, ret;aaa.h = higher;
aaa.l = lower;
ret = func1(aaa, bbb);
ret_h = ret.h;
ret_l = ret.l;}

GAIO TECHNOLOGY

Page: 5/10ダミー関数を使った検証

Rev:1.00共通ヘッダファイル(test.h)#ifndef _TEST_H_#define _TEST_H_typedef{struct T_ULL
unsigned longunsigned longl;h;/**< 下位32bit(符号なし) *//**< 上位32bit(符号なし) */} ULL;
#endif /* _TEST_H_ */GAIO TECHNOLOGY

Page: 6/10

ダミー関数を使った検証

Rev:1.00

2 テストデータの作成
ダミー関数を使用するときは「モジュールテスト用 CSV」を使用します。

モジュールテスト用 CSV の作成「モジュールテスト用 CSV 雛型作成」ダイアログを使用して、ダミー関数や検証する関数名の選択や入出力変数を選択します。
操作手順
ダミー関数 ” dummy_for_func1” を「関数名」ボックスに設定します。
「テストドライバを使ったテスト」のチェックボックスを ON にします。
検証対象関数 "func1" は「カバレッジ測定対象関数」に設定します。
"INPUT/OUTPUT" には、アプリケーションで定義している変数シンボルの一覧が表示されていますので、ここから "func1" 関数の入力となる変数シンボルを選択して”INPUT”へ、出力となる変数シンボルを選択して ”OUTPUT” へ、それぞれ登録します。
※今回の例では"func1" 関数の入出力が登録できませんので、ダミー関数で定義している代行
グローバル変数を使用します。

GAIO TECHNOLOGY

Page: 7/10

ダミー関数を使った検証

Rev:1.00

モジュールテスト用 CSV

１行目:"mod"は、「モジュールテスト用 CSV」であることを示す識別子(ツール予約語)です。
"dummy_for_func1"は、ダミー関数名です。
"3"は、入力変数シンボルの数を表しています。
"2"は、出力変数シンボルの数を表しています。
“func1 は検証対象関数名です。
２行目:"lower","higher",”bbb”は、検証対象関数の引き数 "a",” b” をダミー関数で代行した変数です。
”ret_h”, “ret_l” は、検証対象関数の戻り値 “ret” をダミー関数で代行した変数です。
３／４行目:
テスト変数に与えるテストデータです。

GAIO TECHNOLOGY

Page: 8/10

ダミー関数を使った検証

Rev:1.00

3 カバレッジ計測結果と結果報告書についてダミー関数を実行しますが、検証対象の関数は「カバレッジ測定対象関数」となりますので、カバレッジ計測結果と結果報告書ともに検証対象の関数がエビデンスに表示されます。

GAIO TECHNOLOGY

Page: 9/10

ダミー関数を使った検証

Rev:1.00

著作権情報・免責事項

本テキストの内容は、予告無く変更される場合があります。
本書記載の誤りにより生ずる問題や損失に対して弊社は責任を負いません。
また、本テキストの無断使用、転載は認めておりません。
本テキストおよび本プログラムの一部または全部は「外国為替及び外国貿易管理法」に規定する物資技術に該当する為、輸出する場合は、同法に基づく輸出許可が必要です。

ダミー関数を使った検証（Ver3.3以降）※会社名・商品名は各社の商標または登録商標です。
※本資料の無断転載、複写は禁止しております。

ガイオ・テクノロジー株式会社■ユーザーサポートのご案内
http://www.gaio.co.jp/support/support_about.html■使用方法に関するお問い合わせ方法
お問い合わせは、ユーザーサポート窓口をご利用ください。
http://www.gaio.co.jp/support/support_entry.html
ユーザーサポート窓口へのお問い合わせには、ユーザーIDが必要です。

GAIO TECHNOLOGY

Page: 10/10