4.4.3 ファイルシミュレーションのテストデータを設定する
ファイルシミュレーションのテストデータを設定する手順です。
ファイルシミュレーションには,ファイル入出力文が実行されたときに使用する,次のテストデータを設定します。
-
入力文が実行されたときに,レコード領域に代入する代入値
-
出力文が実行されたときに,レコード領域の値を検証するための期待値
-
出力文が実行されたときに,レコード領域の値を表示するかどうかの設定
-
入力文または出力文が実行されたときに発生する終了条件の設定
ファイルシミュレーション用の設定は,1回の入出力で使用するテストデータ(テストデータセット)を複数準備しておきます。対象の入出力文が実行されたタイミングで,順次使用されます。
- 例
-
テスト対象プログラム
: 002300 PROCEDURE DIVISION. : 003500 OPEN INPUT FILE001. : 003600 READ FILE001. : 005500 READ FILE001. :
003600と005500どちらのREAD文で使われるかは,プログラムの実行順で決まります。READ文が実行されるたびに,テストデータが,設定した順に使用されます。
設定したテストデータセットを順に使用するため,ファイルシミュレーションは次のような動作になります。
-
同一ファイルに対してWRITE文,READ文の順に実行するプログラムの場合に,WRITE文で使ったテストデータが次のREAD文でテストデータとして設定されることはありません。WRITE文で使用したテストデータではなく,READ文用のテストデータが代入値として設定されます。
-
ISAMファイルなどで,検索キーに一致したテストデータが読み込まれるのではなく,検索キーとは関係なくREAD文用のテストデータが代入値として,指定した順に設定されます。
-
終了条件は,準備したテストデータをすべて使用したあとで判定されます。そのため,設定したテストデータや終了条件が,どこの入出力文で使用されるかは,設定したテストデータの個数やプログラムの実行順序に依存します。中断点の設定のように,特定の場所にある入出力文に対して,テストデータや終了条件は設定できません。
- 設定できるテストデータ
-
ファイルシミュレーションでは,次に示す条件をすべて満たすファイルの入出力文に対して,テストデータを設定できます。
-
[スタブ設定ページ]の「入出力するファイル名」欄のチェックボックスがオンになっている。
-
テスト対象プログラム内(入れ子を含む)にファイル記述項がある。
-
EXTERNAL指定がない場合は,テスト対象プログラム内(入れ子を含む)に対象ファイルのOPEN文がある。
-
作業の手順
-
[テスト設定]画面の[ファイル]タブを選択して[ファイルシミュレーション]画面を表示します。
-
[ファイル名]の一覧から,シミュレーションの対象とするファイル名を選択します。
-
[オープンモード],[入出力文]および[レコード領域]から,テストデータを設定したい入出力文を選択します。
入出力文にWRITE文またはREWRITE文を指定すると,「テストデータ」グループの表示が次に変わります。
-
入出力文の何個目のテストデータとするかを「テストデータ」グループのコンボボックスで指定します。
新しいテストデータを作成する場合は,コンボボックスから「追加」を選択します。「追加」を選択すると,最後にテストデータが追加され(個数が2,3,4...と増えていく),入力できる状態になります。
-
テストデータを設定します。
設定方法については,「4.4.7 データ項目に値または期待値を設定する」および「4.4.8 値の入力規則」を参照してください。
-
終了条件を設定する場合は[終了条件]コンボボックスから,判定する終了条件を選択します。終了条件が不要な場合は「なし」を選択します。
注意
-
条件に合致していても,ファイル記述項に複数のレコード領域の定義がある場合は,そのうちの1つのレコード領域にだけしかテストデータは設定できません。また,テストデータは,入出力文(READ文,WRITE文,REWRITE文)に対してだけ設定できます。START文とDELETE文にはテストデータを設定できません。
入出力文に対して設定したテストデータは,次に示す用途で使用されます。
入出力文
用途
READ
代入値
WRITE
期待値
REWRITE
期待値
-
テストデータは,ファイル名,オープンモードおよび入出力文を1つの組み合わせとして,組み合わせごとに設定できます。OPEN文ごとには設定できません。また,テストデータは,1回の入出力文で使用するテストデータとしてデータ項目ごとに指定でき,これらをまとめてテストデータセットとします。その上で,各入出力文の想定する実行回数分のテストデータセットと,1つの終了条件を設定できます。
項番
オープンモード
入出力文
設定できるテストデータセットの数
設定できる終了条件の数
1
INPUT
READ
入出力のテスト分
1種類
2
OUTPUT
WRITE
入出力のテスト分
1種類
3
I-O
READ
入出力のテスト分
1種類
4
WRITE
入出力のテスト分
1種類
5
REWRITE
入出力のテスト分
1種類
6
EXTEND
WRITE
入出力のテスト分
1種類
EXTERNAL指定がないファイルの場合は,オープンモードは実際にテスト対象プログラム内で指定しているオープンモードだけが選択できます。EXTERNAL指定があるファイルの場合は,すべてのオープンモードが表示されます。
また,入出力文は,テスト対象プログラム内で使用していなくても選択できます。そのため,例えば上記の場合で,実際にテスト対象プログラム内では,オープンモードはI-Oだけ,入出力文はREAD文だけ使用している場合は,項番3,4,5の3種類のテストデータだけを設定できます。
-
終了条件は,EXTERNAL指定がないファイルの場合は,入出力文およびファイルのアクセス種別に応じて,次に示す条件を指定できます。EXTERNAL指定があるファイルの場合は,アクセス種別の影響は受けません。
入出力文
アクセス種別
終了条件
READ
順アクセス
AT END指定の文を実行
乱アクセス
INVALID KEY指定の文を実行
動的アクセス
AT END指定の文を実行
INVALID KEY指定の文を実行
WRITE
順アクセス
AT END-OF-PAGE指定の文を実行
乱アクセス
INVALID KEY指定の文を実行
動的アクセス
INVALID KEY指定の文を実行
REWRITE
順アクセス
−
この組み合わせで特別に選択できるものはありません。
乱アクセス
INVALID KEY指定の文を実行
動的アクセス
INVALID KEY指定の文を実行
上記の条件に加えて,入出力文およびファイルのアクセス種別に関係なく,次に示す条件も指定できます。
入出力文
アクセス種別
終了条件
すべて
すべて
入出力エラーを発生させる
なし(終了条件を指定しない)
-
テスト対象のCOBOLソースファイル中でOPENを実行すると,ファイルシミュレーションが開始します。このため,OPEN文がないプログラムではテストデータは設定できません。
-
ファイルシミュレーションが有効な場合は,実体ファイルにはアクセスされません。テスト実行時に実体ファイルにアクセスするときは,[スタブ設定ページ]で対象のファイルをオフにし,実体ファイルを割り当ててください。
-
[スタブ設定ページ]で対象のファイルをオンにすると,テストデータが設定されていなくてもシミュレーションは実行されます。入出力文ごとにシミュレーションのオン/オフの切り替えはできません。
-
終了条件を設定した場合は,設定したテストデータがすべて使用されたあとで終了条件が判定されます。
例えば,READ文用に3つのデータを設定し,かつ,終了条件に「AT END指定の文を実行」を指定すると,最初の3回のREAD文でテストデータが設定され,4回目のREAD文で終了条件の「AT END指定の文を実行」が判定されます。
また,デフォルトでテストデータセットが1つ準備されるため,1回目の入出力文で終了条件を判定させる場合は,テストデータセットを削除して,0個([テストデータセット番号]は「-」と表示される)にしてください。
-
テストデータの設定後にレコード領域を切り替えると,設定済みのテストデータが削除されることを確認するダイアログが表示されます。[はい]ボタンをクリックするとレコード領域は切り替わりますが,それまでに設定したテストデータは削除されます。
-
プログラム上にない入出力文に対しても,テストデータは設定できます。ただし,入出力文が実行されないので,該当するシミュレーションも実行されません。
-
入出力文よりもテストデータが少ない場合,テストデータの個数を超えた分の入出力文では,最後のテストデータが繰り返し使用されます。終了条件が指定されている場合は,終了条件が繰り返し判定されます。
例1:
例2:
-
同じオープンモードが複数ある場合,2回目以降のオープン後は,設定したテストデータの最初から使用されます。
例:
-
手続き文中にUSING指定のSORT文またはMERGE文がある場合,終了条件で「AT END指定の文を実行」を必ず指定してください。指定しないと,実行時エラーまたはテスト実行が終了しなくなります。
-
INTO指定があるREAD文のシミュレーションを実行すると,設定したテストデータが,シミュレーションの実行後にINTOで指定したデータ項目にも転記されます。
-
シミュレーションを実行すると,FILE STATUS句に指定されたデータ項目の値が更新されます。
更新される値については,マニュアル「COBOL2002 操作ガイド」の論理誤りチェックと入出力状態の値の説明を参照してください。
-
ファイル記述項にEXTERNAL指定がある場合,このファイルに対して,テスト対象プログラム以外で入出力文を実行すると,その入出力文に対してもシミュレーションが実行されます。この場合,[出力文の実行結果]一覧や[入力文の実行結果]一覧に,テスト対象プログラム以外で実行した結果が表示されます。EXTERNAL指定の場合は,テストデータの個数や内容も,テスト対象プログラム以外の入出力文を考慮してください。