Hitachi

COBOL2002 Professional Tool Kit 単体テスト支援ガイド


付録A.2 テストケースのCSVファイル

テストケースのインポート/エクスポートで使用するCSVファイルの形式です。

〈この項の構成〉

(1) テストケースのCSVファイルの規則

テストケースのCSVファイルの規則は次のとおりです。

(2) テストケースのCSVファイルの形式

単体テスト支援でエクスポートする,テストケースのCSVファイルの1行のフォーマットは次のとおりです。

<データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>,<設定個所固有情報>

各項目の意味とエクスポート時のデフォルト値について説明します。デフォルト値は,CSVファイルにエクスポートするときに,項目に対応する値が設定されていなかった場合に出力される値のことです。また,インポート時に項目が空欄の場合の扱いは,「空欄の扱い」として説明します。空欄の扱いでエラーになった場合は,エラーメッセージが出力され,その行はスキップされます。

表A‒1 テストケースのCSVファイルの形式

項番

項目

内容

1

データ項目の設定個所の情報

どのテストデータの設定個所かを示す定数です。定数と設定個所を次に示します。

StartPoint

[プログラムの開始時]画面用の設定情報です。

EndPoint

[プログラムの終了時]画面用の設定情報です。

FileSim

[ファイルシミュレーション]画面用の設定情報です。

BreakPoint

[中断点]画面用の設定情報です。

[デフォルト値]

対応する設定個所を表す定数が仮定されます。

[空欄および定数以外の値の扱い]

エラーになります。

2

参照フラグ

プログラム中で参照されているデータ項目かどうかを示します。このデータ項目は,CSV編集のための情報であり,インポート時にはテストプロジェクトに反映させることはなく,エクスポート時の値が編集されていてもエラーになりません。

  • 参照されている場合:R

  • 参照されていない場合:空欄

[空欄の扱い]

無視されます。

3

データ項目のレベル番号

データ項目のレベル番号を表す半角の数字です。

エクスポート時は,01と出力されます。また,特殊レジスタは,エクスポート時は,空欄で出力されます。

データ項目名は,OF修飾子を使った完全な名前で指定するため,インポート時にこの項目をテストプロジェクトに反映させることはなく,エクスポート時の値が編集されていたとしてもエラーになりません。

[デフォルト値]

データ項目のレベル番号文字列です。

[空欄の扱い]

無視されます。

4

データ項目名

テストデータの設定対象のデータ項目名です。デバッガのプログラム名指定(#PROGRAMなど)は扱えません。指定するとエラーになります。

エクスポート時は,すべてのレベル階層をOF修飾子でつなげた名前で出力されます。ただし,FILLERはOF修飾子を付けないでそのまま出力されます。

ファイル記述項で定義されたデータ項目の場合は,ファイル名もOF修飾子でつなげた名前で出力されます。また,データ項目が多重定義されていても出力されます。

[大文字小文字,全角半角の扱い]

エクスポートのときは,等価規則に従った各設定画面に表示される名前で出力されます。

インポートでは,この項目の内容を使って対象のデータを検索します。そのときの検索では,入力したデータ項目名をそのまま使用します。そのため,データ名は,各設定画面に表示される名前として等価規則を意識して指定してください。

OF修飾子,空白,括弧( ),コンマは,等価規則に関係なく半角文字だけを使用できます。全角文字を使用すると,データ名を正しく特定できないことがあります。

[添字の扱い]

添字は,データ名に付加されます。

例:

DATA1(1)

DATA1 OF DATA2 OF DATA3(1,1,1)

[フォーマット]

エクスポートのフォーマットを次に示します。OF,空白,括弧,コンマは半角文字です。

データ名△OF△データ名…△(n,n,…)

△:半角空白

n:添字を示す数字

インポート時も,上記のフォーマットで,かつ,すべてのレベル階層をOF修飾子でつなげた名前でデータ項目が特定されます。ただし,FILLERはOF修飾子を付けないで,FILLERのままで検索されます。

OF修飾子はIN修飾子でもかまいません。また,添字を示す括弧の前の半角空白は省略できます。添字のコンマの後ろに半角空白があってもかまいません。さらに,半角空白は連続していてもかまいません。

[デフォルト値]

設定対象のデータ項目名の文字列です。

[空欄の扱い]

ファイルシミュレーション用のデータで,かつ終了条件の指定であれば無視されます。これ以外の場合はエラーになります。

5

値の表示

データ項目の値を表示する設定です。

表示する場合は「true」,表示しない場合は「false」です。

[デフォルト値]

false

[空欄の扱い]

falseとして扱います。

6

期待値

データ項目の期待値です。このデータ項目の値の表示が表示しない設定の場合は,期待値を設定していても,自動判定対象にはなりません。

この項目が設定なしの場合は,期待値は設定されません。値の入力規則については,「4.4.8 値の入力規則」を参照してください。

[デフォルト値]

なし。

[空欄の扱い]

期待値はないものとして扱います。

7

代入値

データ項目に代入する値です。この項目が設定なしの場合,データ項目に対する値は設定されません。値の入力規則については,「4.4.8 値の入力規則」を参照してください。

[デフォルト値]

なし。

[空欄の扱い]

代入値はないものとして扱います。

8

設定個所固有情報(可変長)

テストデータ設定個所ごとの固有の情報です。設定個所によって格納する情報が変わります。

StartPoint

なし。

EndPoint

なし。

FileSim

表A-2 FileSimの設定個所固有情報」を参照してください。

BreakPoint

文番号です。「表A-3 BreakPointの設定個所固有情報」を参照してください。

[デフォルト値]

対応するテストデータ設定個所で格納する情報が変わります。

StartPoint

なし。

EndPoint

なし。

FileSim

表A-2 FileSimの設定個所固有情報」を参照してください。

BreakPoint

文番号です。「表A-3 BreakPointの設定個所固有情報」を参照してください。

表A‒2 FileSimの設定個所固有情報

項番

項目

意味

1

ファイル名

シミュレーションする入出力文の対象となるファイル名です。

[デフォルト値]

シミュレーションする入出力文の対象となるファイル名

[空欄の扱い]

エラーになります。

2

プログラム名

シミュレーションする入出力文の対象となるファイルが定義されているプログラム名です。

テスト対象プログラムで宣言されている場合は,テスト対象プログラム名です。テスト対象プログラムの内側のプログラムで宣言されている場合は,内側のプログラム名です。

[デフォルト値]

ファイルが定義されたプログラム名

[空欄の扱い]

テスト対象プログラムが仮定されます。

注意

指定したプログラムが,テスト対象プログラムでも,その内側のプログラムでもない場合はエラーになります。指定したプログラムがテスト対象COBOLソースファイル内に存在していてもエラーになります。

プログラム名は,コンパイル後の名前で指定する必要があります。

3

オープンモード

シミュレーションする入出力文の対象となるファイルに対するオープンモードです。次の値のどれかです。

  • INPUT

  • OUTPUT

  • I-O

  • EXTEND

[デフォルト値]

テストデータ設定対象のオープンモード

[空欄の扱い]

エラーになります。

4

入出力文

テストデータを設定する入出力文です。次の値のどれかです。

  • READ

  • WRITE

  • REWRITE

[デフォルト値]

テストデータ設定対象の入出力文

[空欄の扱い]

エラーになります。

5

テストデータセット番号

入出力文が何回目に実行されたときに,テストデータを使用するのかを示す番号です。すべてのテストデータセットを削除した場合は,「-」が表示されます。

[デフォルト値]

エクスポートのときは,テストデータを設定した番号

ひな形のときは,1

[空欄の扱い]

終了条件を指定する場合は無視されます。

終了条件の指定がない場合はエラーになります。

6

終了条件

入出力文に対して実行する終了条件です。次の値のどれかです。

  • AtEnd:AT END指定の文を実行させる。

  • AtEndOfPage:AT END-OF-PAGE指定の文を実行させる。

  • InvalidKey:INVALID KEY指定の文を実行させる。

  • IOError:入出力エラーを発生させる。

終了条件を設定する場合は,単独で1行に記述する必要があります。

インポートしたCSVファイルで,終了条件に値が設定されていた場合,次の項目は無視されます。

  • データ項目名

  • データ項目のレベル番号

  • 値の表示

  • 期待値

  • 代入値

  • データ番号

[デフォルト値]

なし

[空欄の扱い]

終了条件なしとして扱います。

表A‒3 BreakPointの設定個所固有情報

項番

項目

意味

1

文番号

中断点を設定した文番号です。文番号は,中断点を設定した行番号と,設定した文の位置番号をピリオドでつなげた形式です。登録集原文の展開後など,COBOLコンパイラが付与した番号です。コンパイルリストの行番号と一致します。形式を次に示します。

行番号[.位置番号]

ピリオド以降の位置番号を省略すると,「.1」が仮定されます。

行番号は最大で7けた,位置番号は最大で3けたです。どちらかが超えた場合はエラーになります(例:00000001の場合,数値としては1けたですがエラーになります)。

行番号の先頭の0は省略できます。例えば,1000行目に設定した中断点の場合は,次のどれも同じ意味になります。

0001000.1

0001000.001

1000.1

1000.001

0001000

1000

エクスポート時は,0001000.1の形式で出力されます。

[デフォルト値]

中断点が設定された文番号

[空欄の扱い]

エラーになります。

(3) ひな形の内容

ひな形としてエクスポートしたCSVファイルについて,各設定画面でテストデータとして出力する内容です。

表A‒4 ひな形で出力する内容

項番

テストデータの設定先

内容

1

[プログラムの開始時]画面

プログラムの引数,返却項目の有無に関係なく,テストデータを何も設定していない状態で出力されます。

2

[プログラムの終了時]画面

プログラムの引数,返却項目の有無に関係なく,テストデータを何も設定していない状態で出力されます。

3

[ファイルシミュレーション]画面

[ファイルシミュレーション]画面でテストデータを設定できる条件に合致する場合,そのファイルおよびオープンモードに合わせて,可能な組み合わせがすべて出力されます。

レコード領域が複数定義されていた場合は,最初に定義されているレコード領域を対象にし,2つ目以降のレコード領域はコメント行で出力されます。

[ファイルシミュレーション]画面でテストデータを設定できる条件に合致しない場合は,出力されません。

[ファイルシミュレーション]画面でテストデータを設定できる条件については,「4.4.3 ファイルシミュレーションのテストデータを設定する」を参照してください。

4

[中断点]画面

文の有無に関係なく,コメント行で出力されます。そのときの文番号は「0001000.1」です。

COBOLプログラムのソーステキスト

IDENTIFICATION  DIVISION.
PROGRAM-ID. 'MAIN'.
ENVIRONMENT       DIVISION.
INPUT-OUTPUT      SECTION. 
FILE-CONTROL.
    SELECT  FILE01 ASSIGN TO 'FILE-B2046M1.txt'.
DATA DIVISION.
FILE              SECTION.
FD  FILE01.
01  REC0001 PIC X(5).
01  REC0002 PIC X(10).
WORKING-STORAGE  SECTION.
  01 DATA1 PIC X(10).
PROCEDURE  DIVISION.
  OPEN OUTPUT FILE01.
  WRITE REC0001.
  CLOSE FILE01.
END PROGRAM 'MAIN'.

ひな形CSVの内容

* Version: 03-04
* テストプロジェクト名: SAMPLE_PROJECT
* プログラム名: MAIN
* COBOLソースファイル: C:\temp\main.cbl
***** [プログラム開始時]画面の設定 *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>
StartPoint,,,RETURN-CODE,false,,
StartPoint,R,01,REC0001 OF FILE01,false,,
StartPoint,,01,REC0002 OF FILE01,false,,
StartPoint,,01,DATA1,false,,
***** [プログラム終了時]画面の設定 *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>
EndPoint,,,RETURN-CODE,false,,
EndPoint,R,01,REC0001 OF FILE01,false,,
EndPoint,,01,REC0002 OF FILE01,false,,
EndPoint,,01,DATA1,false,,
***** [ファイルシミュレーション]画面の設定 (FILE01(MAIN/MAIN)/OUTPUT/WRITE) *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>,<ファイル名>,<プログラム名>,<オープンモード>,<入出力文>,<テストデータセット番号>,<終了条件>
FileSim,R,01,REC0001 OF FILE01,false,,,FILE01,MAIN,OUTPUT,WRITE,1,
* FileSim,,01,REC0002 OF FILE01,false,,,FILE01,MAIN,OUTPUT,WRITE,1,
***** [中断点]画面の設定 (0001000.1) *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>,<文番号>
* BreakPoint,,,RETURN-CODE,false,,,0001000.1
* BreakPoint,R,01,REC0001 OF FILE01,false,,,0001000.1
* BreakPoint,,01,REC0002 OF FILE01,false,,,0001000.1
* BreakPoint,,01,DATA1,false,,,0001000.1

(4) テストケースのCSVファイルに関する注意

  1. テストケースのCSVファイルには,単体テスト支援の画面では制限値・限界値としている値を超えた設定ができますが,このように設定したCSVファイルをインポートしても,画面では制限値・限界値を超えた部分の値は参照できません。ただし,設定した内容はテスト実行時には反映され,実行結果としては参照できます。

    テストケースのCSVファイルの制限値・限界値を超えた値を設定した場合は,該当する行の読み込みをスキップし,エラーを表示し,次の行以降の読み込みを継続します。テストケースCSVの制限値・限界値については,「付録C 単体テスト支援の制限値と限界値」を参照してください。

  2. 期待値のための情報が設定されていて,かつ「代入値」に値が設定されていた場合の動作は次のとおりです。

    期待値のための情報とは,「値の表示」の値がtrueで「期待値」が空,または,「値の表示」の値がtrueで「期待値」に値が設定されている場合のことです。

    StartPointの場合

    「代入値」の内容だけを適用します。

    EndPointの場合

    期待値用の情報だけを適用します。

    FileSimの場合

    設定個所固有情報の「入出力文」の内容によって使用するものが変わります。「入出力文」の値がREADの場合は,「代入値」の内容だけを適用します。「入出力文」の値がWRITEまたはREWRITEの場合は,期待値のための情報だけを適用します。

    BreakPointの場合

    両方適用します。

    どの場合でも,採用しなかった値について,エラーメッセージは出力されません。

  3. 集団項目に対する設定をインポートした場合,「期待値」と「代入値」の項目は無視されます。エクスポートのときは空欄で出力されます。

  4. インポートしたCSVファイルで次の内容が設定されている場合,設定する順番(CSVファイル内の行の順)に関係なく,集団項目に対する「値の表示」はtrueになります。

    • 集団項目に対して設定する行(CSVファイル内の行)がない。または,集団項目に対する「値の表示」がfalseまたは空欄。

    • 集団項目の下位要素の「値の表示」がtrue。

  5. CSVファイル内で,同じデータ項目に対してテストデータを設定する行が複数ある場合は,最後の設定が有効になります。

  6. 特殊レジスタのレベル番号は無視されます。エクスポートのときは,空欄で出力されます。

  7. FILLERに対する設定をインポートした場合,その設定はすべて無視されます。

(5) テストケースのCSVファイルの例

COBOLプログラムのソーステキストとテストケースのCSVファイルの例の説明です。

例1:集団項目を含むテストデータ設定

COBOLプログラムのソーステキスト(抜粋)

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA01.
 05 SUBDATA01 PIC X(3).
 05 SUBDATA02 PIC S9(3).

テストケースのCSVファイルの例(抜粋)

* Version: 03-04
* テストプロジェクト名: SAMPLE_PROJECT
* プログラム名: MAIN
* COBOLソースファイル: C:\temp\main.cbl
***** [プログラム開始時]画面の設定 *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>
StartPoint,R,01,DATA01,,,
StartPoint,R,05,SUBDATA01 OF DATA01,,,"""ABC"""
StartPoint,R,05,SUBDATA02 OF DATA01,,,123
***** [プログラム終了時]画面の設定 *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>
EndPoint,R,01,DATA01,,,
EndPoint,R,05,SUBDATA01 OF DATA01,true,"""ABC""",
EndPoint,R,05,SUBDATA02 OF DATA01,true,123,

解説

データ項目の設定個所の情報

参照フラグ

レベル番号

データ項目名

値の表示

期待値

代入値

7

StartPoint

R

01

DATA01

8

StartPoint

R

05

SUBDATA01 OF DATA01

"""ABC"""

9

StartPoint

R

05

SUBDATA02 OF DATA01

123

12

EndPoint

R

01

DATA01

13

EndPoint

R

05

SUBDATA01 OF DATA01

true

"""ABC"""

14

EndPoint

R

05

SUBDATA02 OF DATA01

true

123

CSVファイルの7,8,9行目の設定で,テスト対象プログラム名(MAIN)の開始時用データとしてテストデータが設定されます。

  • 7行目は集団項目用の設定のため,行自体はなくてもかまいません。代入値があっても無視されます。

  • 8行目の内容で,SUBDATA01に文字列ABCが代入されます。また,データ構造から,SUBDATA01だけで名前解決が可能なら,OF修飾子以降は不要です。

  • 9行目の内容で,SUBDATA02に数値123が代入されます。

CSVファイルの12,13,14行目の設定で,テスト対象プログラム名(MAIN)の終了時用データとしてテストデータが設定されます。

  • 12行目は集団項目用の設定のため,行自体はなくてもかまいません。期待値があっても無視されます。

  • 12行目では「値の表示」は空(=false)ですが,13,14行目で値の表示をtrueにしているため,GUIで確認したときは,DATA01の「値の表示」にもチェックが入ります。

  • 13,14行目で,SUBDATA01とSUBDATA02を期待値と比較しています。

例2:中断点の設定

COBOLプログラムのソーステキスト(抜粋)

000100 ID DIVISION.
000200 PROGRAM-ID. MAIN.
000300 DATA DIVISION.
000400 WORKING-STORAGE SECTION.
000500   01 SAMPLEDATA PIC 9(9) VALUE 1. 
000600 PROCEDURE DIVISION.
000800   DISPLAY SAMPLEDATA.
000900   IF SAMPLEDATA = 2
001000   :

テストケースのCSVファイルの例(抜粋)

* Version: 03-04
* テストプロジェクト名: SAMPLE_PROJECT
* プログラム名: MAIN
* COBOLソースファイル: C:\temp\main.cbl
***** [中断点]画面の設定 (0000800.1) *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>,<文番号>
BreakPoint,R,01,SAMPLEDATA,true,1,,0000800.1
***** [中断点]画面の設定 (0000900.1) *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>,<文番号>
BreakPoint,R,01,SAMPLEDATA,true,2,2,0000900.1

解説

データ項目の設定個所の情報

参照フラグ

レベル番号

データ項目名

値の表示

期待値

代入値

文番号

7

BreakPoint

R

01

SAMPLEDATA

true

1

0000800.1

10

BreakPoint

R

01

SAMPLEDATA

true

2

2

0000900.1

CSVファイルの7行目で,プログラムの800行目のDISPLAY文に中断点を設定して,SAMPLEDATAを期待値と比較しています。

CSVファイルの10行目で,プログラムの900行目のIF文に中断点を設定し,次を設定しています。

  • SAMPLEDATAを期待値と比較している(中断してすぐ)。

  • SAMPLEDATAに2を代入している(上記の比較が終わったあと)。

例3:ファイルシミュレーション用テストデータの設定

COBOLプログラムのソーステキスト(抜粋)

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. MAIN.
000300 ENVIRONMENT DIVISION.
000400 INPUT-OUTPUT SECTION.
000500 FILE-CONTROL.
000600 SELECT FILE001 ASSIGN TO SYS010.
001000 DATA DIVISION.
001100 FILE SECTION.
001200 FD FILE001.
001300 01  USER.
001400   02 USERID   PIC 9(9).
001500   02 USERNAME PIC X(30).
002300 PROCEDURE DIVISION.
002400   OPEN INPUT FILE001.
002500 FILE-READ.
002600   READ FILE001
002700   AT END
002800     GO TO END-OF-FILE-READ 
002900   NOT AT END
           :
004000     GO TO FILE-READ
004100   END-READ.
004200 END-OF-FILE-READ.
004300   CLOSE FILE001.

テストケースのCSVファイルの例(抜粋)

* Version: 03-04
* テストプロジェクト名: SAMPLE_PROJECT
* プログラム名: MAIN
* COBOLソースファイル: C:\temp\main.cbl
***** [ファイルシミュレーション]画面の設定 (FILE001(MAIN/MAIN)/INPUT/READ) *****
* <データ項目の設定個所の情報>,<参照フラグ>,<データ項目のレベル番号>,<データ項目名>,<値の表示>,<期待値>,<代入値>,<ファイル名>,<プログラム名>,<オープンモード>,<入出力文>,<テストデータセット番号>,<終了条件>
FileSim,R,01,USER OF FILE001,,,,FILE001,MAIN,INPUT,READ,1,
FileSim,R,02,USERID OF USER OF FILE001,,,1,FILE001,MAIN,INPUT,READ,1,
FileSim,R,02,USERNAME OF USER OF FILE001,,,"""user1""",FILE001,MAIN,INPUT,READ,1,
FileSim,R,01,USER OF FILE001,,,,FILE001,MAIN,INPUT,READ,2,
FileSim,R,02,USERID OF USER OF FILE001,,,2,FILE001,MAIN,INPUT,READ,2,
FileSim,R,02,USERNAME OF USER OF FILE001,,,"""user2""",FILE001,MAIN,INPUT,READ,2,
FileSim,,,,,,,FILE001,MAIN,INPUT,READ,,AtEnd

解説

データ項目の設定個所の情報

参照フラグ

レベル番号

データ項目名

値の表示

期待値

代入値

ファイル名

プログラム名

オープンモード

入出力文

テストデータセット番号

終了条件

7

FileSim

R

01

USER OF FILE001

FILE001

MAIN

INPUT

READ

1

8

FileSim

R

02

USERID OF USER OF FILE001

1

FILE001

MAIN

INPUT

READ

1

9

FileSim

R

02

USERNAME OF USER OF FILE001

"""user1"""

FILE001

MAIN

INPUT

READ

1

10

FileSim

R

01

USER OF FILE001

FILE001

MAIN

INPUT

READ

2

11

FileSim

R

02

USERID OF USER OF FILE001

2

FILE001

MAIN

INPUT

READ

2

12

FileSim

R

02

USERNAME OF USER OF FILE001

"""user2"""

FILE001

MAIN

INPUT

READ

2

13

FileSim

FILE001

MAIN

INPUT

READ

AtEnd

7〜12行目でテストデータを設定しています。

  • 7,8,9行目で1回目のREAD文で代入する値を指定しています。

  • 10,11,12行目で2回目のREAD文で代入する値を指定しています。

13行目では,終了条件を指定しています。

この内容でテストすると,READ文が3回実行され,最初の2回ではデータが設定され(入力文のシミュレーション),3回目のREAD文でAT END側の処理に移ります。