ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS

FAQ / カバレッジマスターwinAMS

テストデータ設定に関する問題

301_03 : ポインタを使用した複雑なチェーン(リスト)構造を持った階層の深い変数にテストデータを設定する場合、効率の良い方法を教えてください。

【質問】
ポインタを使用した複雑なチェーン(リスト)構造を持った階層の深い変数をテストデータとして扱っています。ポインタを1つ1つ指定すればテスト可能であることは理解していますが、変数の指定が複雑で工数がかかります。効率の良いテストデータの指定方法はありませんか?

【回答】
ポインタを使用した複雑なチェーン(リスト)構造を持った階層の深い変数をテストデータとして扱う場合、カバレッジマスターwinAMSでテストする事は可能ですが、変数の指定が複雑になります。このFAQでは、ダミー変数を利用して簡単にテストデータを設定する方法を紹介します。

サンプルプログラム(main.h)

struct ST_PARAM
{
 	 	int data;
 		int ret_code;
} gb_result;


typedef struct st_Leaf {
 	  int No;
 	  void *pstCmd;
} T_Leaf;


typedef struct st_Second {
 	  int No;
 	  T_Leaf *pstLeaf;
} T_Second;


typedef struct st_Top {
 	  int No;
 	  T_Second *pstSecond;
} T_Top;


typedef struct TEST
{
 	  int enable;
 	  int mode;
 	  int input;
} T_test1;

サンプルプログラム(main.c)

void func1(T_Top * param)
{
        int enable,mode,input;
        enable = ( (T_test1 *)(param->pstSecond->pstLeaf->pstCmd) ) -> enable;
        mode   = ( (T_test1 *)(param->pstSecond->pstLeaf->pstCmd) ) -> mode;
        input  = ( (T_test1 *)(param->pstSecond->pstLeaf->pstCmd) ) -> input;

        if( enable )
        {
                switch( mode )
                {
                case 0:
                        gb_result.data = input;
                        break;
                case 1:
                        gb_result.data = input * 10;
                        break;
                case 2:
                        gb_result.data = input * 100;
                        break;
                case 3:
                        if( input>100 ) 
                                gb_result.data = 10000;
                        else
                                gb_result.data = input*100;
                        break;
                default:
                        gb_result.data = -1;
                }
                // return code
                gb_result.ret_code = TRUE;
        }
        else
        {
                gb_result.data = 0;
                gb_result.ret_code = FALSE;
        }
}
     

手順1

テストデータを設定する為のダミーシンボルを作成します。
※ダミーシンボルを作成するファイルは運用に合わせて、任意で決定して下さい。
作成したファイルをコンパイルして、テスト対象オブジェクトにリンクする必要があります。

サンプルプログラム(dummy.c)

T_test1 DBG_test1; // テストデータ設定対象変数
T_Leaf DBG_Leaf = { 0, (void *)&DBG_test1};
T_Second DBG_Second = { 0, &DBG_Leaf};
T_Top DBG_param = { 0, &DBG_Second };  // テスト対象関数の引数用

手順2

CSV雛形作成から、関数引数であるfunc1@parmをアドレス設定でINPUTに登録します。


手順3

ダミーシンボルであるDBG_test1.enableDBG_test1.modeDBG_test1.inputをINPUTに登録します。

手順4

CSV編集(またはExcel)にてテスト対象関数に指定するダミー変数のアドレスを引数にポインタアドレスとして記述します。
※複雑なチェーン構造について、ツールで設定せずにダミー変数を使って記述する事になります。

 

関連サポート情報検索

【サポート情報サイト内Google検索】

検索キーワード: ポインタチェーン

他のキーワード検索

 


参考情報・リンク