# 测试基准说明 > 出典: 程序分类及测试基准.pdf (第2部:测试基准) ## 凡例 | 記号 | 意味 | |------|------| | ◎ | 必須テスト | | ○ | 推奨テスト | --- ## 2.1 通用测试基准 ### 2.1.1 正常系通用(8项) | 编号 | 项目 | 内容 | 优先级 | |------|------|------|--------| | COM-N001 | 最小数据(1条) | 各输入文件1条 | ◎ | | COM-N002 | 标准数据(多条) | 正常业务量 | ◎ | | COM-N003 | 最大数据(上限) | 定义上限(含性能) | ○ | | COM-N004 | 全部输出文件存在 | 期望输出文件全部生成 | ◎ | | COM-N005 | 输出文件内容确认 | 与期望值完全一致 | ◎ | | COM-N006 | 输出记录长度确认 | 与规格一致 | ◎ | | COM-N007 | 输出排序确认 | 键序正确 | ◎ | | COM-N008 | JOBLOG确认 | 日期/件数/结束码 | ◎ | ### 2.1.2 异常系通用(8项) | 编号 | 项目 | 内容 | 期望结果 | 优先级 | |------|------|------|---------|--------| | COM-A001 | 文件不存在 | 不存在文件 | OPEN STATUS 35 ABEND | ◎ | | COM-A002 | 全部0件 | 所有输入为空 | 正常结束 输出0条 | ◎ | | COM-A003 | 部分0件 | 部分文件为空 | 正常结束 | ◎ | | COM-A004 | 记录长度不一致 | LRECL不匹配 | ABEND/STATUS错误 | ◎ | | COM-A005 | 磁盘满 | 容量不足 | 顺序文件STATUS 34,VSAM文件STATUS 24 | ○ | | COM-A006 | OPEN模式违反 | 只读文件WRITE | STATUS 37 | ◎ | | COM-A007 | 再OPEN | OPEN中再OPEN | STATUS 41 | ◎ | | COM-A008 | 异常结束码 | Uxxxx确认 | 与期望一致 | ◎ | ### 2.1.3 确认项通用(8项) | 编号 | 确认项 | 确认内容 | 确认方法 | |------|--------|---------|---------| | COM-C001 | 程序开始 | 程序名/日時/版本 | JOBLOG | | COM-C002 | OPEN确认 | 各文件OPEN正常 | JOBLOG | | COM-C003 | 输入件数 | READ件数 | JOBLOG/CSV | | COM-C004 | 输出件数 | WRITE件数 | JOBLOG/CSV | | COM-C005 | 正常结束 | RETURN-CODE=0 | JOBLOG | | COM-C006 | 异常结束 | 错误码输出 | JOBLOG | | COM-C007 | 处理时间 | 作业经过时间 | JOBLOG时刻 | | COM-C008 | SYSOUT | 报表输出确认 | SYSOUT文件 | --- ## 2.2 类型别测试基准 ### 匹配基础测试(1:1 / 1:N / N:1) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | MT-N001 | 正常 | 1:1 主键完全匹配 | 双方各N件,全部匹配成功 | ◎ | | MT-N002 | 正常 | 1:N 主1件从N件 | 主件1件对应从件N件 | ◎ | | MT-N003 | 正常 | N:1 从1件主N件 | 从件1件对应主件N件 | ◎ | | MT-N004 | 正常 | 主件有剩余键 | 从件读完,主件剩余→WRITE W03 | ◎ | | MT-N005 | 正常 | 从件有剩余键 | 主件读完,从件剩余→WRITE W02 | ◎ | | MT-N006 | 异常 | 主键值重复 | 主件内同键出现2次 | ◎ | | MT-N007 | 异常 | 键值未排序 | 升序前提被违反→误匹配 | ◎ | | MT-R001 | 确认 | 匹配件数合计 | 正常/剩余件数之和与输入一致 | ◎ | ### 匹配系不平衡测试 | 编号 | 项目 | 内容 | 优先级 | |------|------|------|--------| | MT-N009 | R01=1条 R02=N条 | 1:N 极端不平衡 | ◎ | | MT-N010 | R01=N条 R02=1条 | N:1 极端不平衡 | ◎ | | MT-N011 | R01=100万条 R02=0条 | 极大量仅存测试 | ○ | | MT-N012 | R01全部匹配 R02全部匹配 | 完美匹配(实务中很少见) | ○ | ### 条件分支系测试(IF / EVALUATE) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | B-N001 | 正常 | IF 2路分支(ELSE) | IF条件成立/不成立各处理 | ◎ | | B-N002 | 正常 | IF 3路分支(ELSE IF) | ELSE IF 链式分支 | ◎ | | B-N003 | 正常 | IF 复合条件 AND/OR | 多个条件组合 | ◎ | | B-N004 | 正常 | IF 88-level 条件名 | 88条件直接判断 | ◎ | | B-N005 | 正常 | IF 嵌套3层 | 内部IF引用外部IF变量 | ◎ | | B-N006 | 正常 | EVALUATE WHEN 多值 | 多个WHEN分支 | ◎ | | B-N007 | 正常 | EVALUATE ALSO | 多条件组合判断 | ◎ | | B-N008 | 正常 | EVALUATE TRUE/FALSE | 条件表达式判定 | ◎ | | B-N009 | 正常 | EVALUATE WHEN OTHER | 默认分支覆盖 | ◎ | | B-N010 | 正常 | CONTINUE / NEXT SENTENCE | 空分支处理 | ○ | | B-A001 | 异常 | IF 未闭合(缺少END-IF) | 编译错误,非运行时测试(属代码审查范畴) | ◎ | | B-A002 | 异常 | EVALUATE 无WHEN OTHER | 全不匹配→无操作 | ○ | | B-R001 | 确认 | COBOL 85 条件表达式 | 关系运算符全部覆盖 | ◎ | ### 内部表检索测试(SEARCH / SEARCH ALL) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | T-N001 | 正常 | SEARCH ALL 等值查找(找到) | KEY等于目标存在 | ◎ | | T-N002 | 正常 | SEARCH ALL 等值查找(未找到) | KEY等于目标不存在 | ◎ | | T-N003 | 正常 | SEARCH ALL 多键查找 | 主键+副键组合 | ◎ | | T-N004 | 正常 | SEARCH 顺序查找 | KEY条件不唯一用SEARCH | ○ | | T-N005 | 正常 | OCCURS 1件表 | 表只有1条时检索 | ◎ | | T-N006 | 正常 | OCCURS DEPENDING ON | 可变长表边界检索 | ◎ | | T-N007 | 正常 | INDEXED BY 索引操作 | SET/SEARCH ALL 使用 INDEX | ◎ | | T-A001 | 异常 | SEARCH ALL 未排序表 | 二进制查找未排序→误命中 | ◎ | | T-A002 | 异常 | INDEX 越界 | OCCURS范围外访问 | ◎ | | T-A003 | 异常 | OCCURS DEPENDING ON = 0 | 空表检索 | ◎ | | T-R001 | 确认 | SEARCH ALL 后INDEX位置 | 找到后INDEX指向正确位置 | ◎ | ### 子程序调用测试(CALL / LINKAGE) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | C-N001 | 正常 | CALL 字面量名 | CALL 'SUBPGM' USING ... | ◎ | | C-N002 | 正常 | CALL USING 参数传递 | CALL侧+LINKAGE侧参数对应 | ◎ | | C-N003 | 正常 | CALL 变量名(动态CALL) | CALL WS-PGM-NAME USING ... | ◎ | | C-N004 | 正常 | CALL + RETURN-CODE | RETURN-CODE设置和检查 | ◎ | | C-N005 | 正常 | CALL + EXIT PROGRAM | 子程序正常返回 | ◎ | | C-N006 | 正常 | CALL + GOBACK | GOBACK返回(含RETURN-CODE) | ◎ | | C-N007 | 正常 | IS INITIAL 指定程序 | 每次CALL时WS初始化确认 | ◎ | | C-N008 | 正常 | 非IS INITIAL 程序 | CALL跨调用WS值保持 | ◎ | | C-N009 | 正常 | CALL 多层嵌套(A→B→C) | 3层CALL传递参数 | ○ | | C-A001 | 异常 | CALL 不存在的程序 | 未加载→ABEND | ◎ | | C-A002 | 异常 | CALL USING 参数长度不匹配 | CALL侧与LINKAGE侧长度不同 | ◎ | | C-A003 | 异常 | CALL CANCEL 后再CALL | CANCEL→INITIAL状态 | ◎ | | C-A004 | 异常 | CALL 递归调用自身 | 需RECURSIVE编译选项(实务罕见),无RECURSIVE→ABEND | ○ | | C-R001 | 确认 | CALL 前STOP RUN | CALL前正常结束 | ◎ | | C-R002 | 确认 | CALL 后RETURN-CODE检查 | 子程序的返回码正确传递 | ◎ | ### SYSIN读取测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | SY-N001 | 正常 | SYSIN正常参数读取 | 标准参数卡片→正确解析 | ◎ | | SY-N002 | 正常 | SYSIN多卡连续读取 | 多张参数卡片全部正确读取 | ◎ | | SY-N003 | 正常 | SYSIN结束处理 | SYSIN读到文件尾后正常继续 | ◎ | | SY-A001 | 异常 | SYSIN参数格式错误 | 非法参数→错误处理/ABEND | ◎ | | SY-A002 | 异常 | SYSIN空(0件) | 无参数卡片→默认值处理 | ◎ | | SY-A003 | 异常 | SYSIN文件不存在 | OPEN STATUS 35 | ◎ | | SY-R001 | 确认 | 参数解析结果 | 确认解析后的参数值与预期一致 | ◎ | ### 分割系测试(50分割 / 25分割 / 100分割) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | S-N001 | 正常 | 50分割(正好50件) | 1件ずつ50ファイル出力 | ◎ | | S-N002 | 正常 | 50分割(51件→余1件) | 余数文件处理 | ◎ | | S-N003 | 正常 | 50分割(49件→1件不足) | 最终文件不满 | ◎ | | S-N004 | 正常 | 25分割(25件→正好) | 整数倍 | ◎ | | S-N005 | 正常 | 100分割(100件→正好) | 整数倍 | ◎ | | S-N006 | 正常 | 分割数=1(50分割1件) | 1件入力→1ファイルのみ出力 | ◎ | | S-N007 | 正常 | 分割数>记录数(50分割3件) | 出力ファイル仅少数 | ○ | | S-A001 | 异常 | 分割文件OPEN失败 | 途中文件OPEN STATUS 35 | ◎ | | S-A002 | 异常 | 分割文件磁盘满 | 途中文件WRITE STATUS 34 | ○ | | S-R001 | 确认 | 分割文件命名规则 | 规则通りのファイル名确认 | ◎ | | S-R002 | 确认 | 各文件件数合计=入力件数 | 总件数一致确认 | ◎ | ### key切测试(汇总 / 聚合 / 非汇总) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | KB-N001 | 正常 | 汇总型(ADD累加) | 同键多件→金额合计正确 | ◎ | | KB-N002 | 正常 | 聚合型(件数/最大值等) | 同键多件→件数/最大/最小正确 | ◎ | | KB-N003 | 正常 | 非汇总型(键变化做标记) | 键切换时仅变化检测,无累加 | ◎ | | KB-N004 | 正常 | 单键组(全部同键) | 全体1个键值→1次中断 | ◎ | | KB-N005 | 正常 | 多键组(N个不同键) | 键值变化N-1次→N组输出 | ◎ | | KB-N006 | 正常 | 单条记录单键组 | 1件1组→自身就是汇总值 | ◎ | | KB-A001 | 异常 | 前键值字段未初始化 | WS-PREV-KEY初始空格→首次误中断 | ◎ | | KB-A002 | 异常 | 累加器溢出 | 金额超PIC定义→SIZE ERROR | ○ | | KB-R001 | 确认 | 各组小计=合计 | 各组累加值之和与全局合计一致 | ◎ | ### SORT 类型测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | SR-N001 | 正常 | SORT USING/GIVING(升序) | 简单升序排序 | ◎ | | SR-N002 | 正常 | SORT DESCENDING | 降序 | ◎ | | SR-N003 | 正常 | 多键SORT | 第1键+第2键 | ◎ | | SR-N004 | 正常 | 重复键顺序维持 | 稳定排序确认 | ◎ | | SR-N005 | 正常 | 0条SORT | 空文件 | ◎ | | SR-N006 | 正常 | 1条SORT | 1件 | ○ | | SR-N007 | 正常 | INPUT PROCEDURE | 排序前筛选 | ◎ | | SR-N008 | 正常 | OUTPUT PROCEDURE | 排序后汇总 | ◎ | | SR-N009 | 正常 | INPUT PROCEDURE(编辑) | 排序前字段编辑 | ○ | | SR-N010 | 正常 | OUTPUT PROCEDURE(报表) | 排序后报表 | ○ | | SR-A001 | 异常 | SORT区不足 | 超大量 → RC=20 | ○ | | SR-A002 | 异常 | INPUT内未RELEASE | 数据丢失 | ◎ | | SR-A003 | 异常 | OUTPUT内未RETURN | 死循环 | ○ | | SR-R001 | 确认 | RC=0 | 正常结束 | ◎ | | SR-R002 | 确认 | RC=16 | SORT语法错误 | ○ | | SR-R003 | 确认 | RC=20 | 工作区不足 | ○ | ### MERGE 类型测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | MR-N001 | 正常 | 2文件MERGE | 两个已排序文件合并 | ◎ | | MR-N002 | 正常 | 3文件MERGE | 三个 | ○ | | MR-N003 | 正常 | 重复键MERGE | 同键顺序 | ◎ | | MR-A001 | 异常 | 输入未排序文件 | 未排序→误合并 | ◎ | ### 校验测试(含重复 / 不含重复 / 半角) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | VF-N001 | 正常 | 字段校验通过 | 输入值在允许范围内→正常输出 | ◎ | | VF-N002 | 正常 | 字段校验拒绝 | 输入值异常→错误输出文件 | ◎ | | VF-N003 | 正常 | 重复检测(正常) | 首次出现该键→通过 | ◎ | | VF-N004 | 正常 | 重复检测(重复) | 同一键第二次出现→错误输出 | ◎ | | VF-N005 | 正常 | 半角长度20桁 | 半角20桁以内→通过 | ◎ | | VF-N006 | 正常 | 半角长度4桁 | 半角4桁以内→通过 | ◎ | | VF-A001 | 异常 | 半角超长(21桁) | 半角21桁→截断/错误 | ◎ | | VF-A002 | 异常 | 全角混入 | 半角字段全角文字进入PIC X(半角)域 | ◎ | | VF-R001 | 确认 | 错误件数计数 | 正常件+错误件=输入件数 | ◎ | ### 编辑输出测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | ED-N001 | 正常 | WRITE AFTER ADVANCING | 改页/改行的编辑输出 | ◎ | | ED-N002 | 正常 | 编辑字段(PIC Z,9,*) | ゼロサプレス/編集文字 | ◎ | | ED-N003 | 正常 | HEADING/FOOTING输出 | 报表头尾正确 | ◎ | | ED-N004 | 正常 | 明细行连续输出 | N条明细行正确排序 | ◎ | | ED-N005 | 正常 | 改页(AFTER PAGE) | 改页时HEADING重复 | ◎ | | ED-A001 | 异常 | 编辑字段长度不足 | 数值超PIC编辑域→*溢出 | ◎ | | ED-A002 | 异常 | 改页中改行 | AFTER PAGE + AFTER n 组合 | ○ | | ED-R001 | 确认 | 输出行数确认 | HEADING+明细+FOOTING合计 | ◎ | ### CSV→FB转换测试(无换行 / 有换行) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | CF-N001 | 正常 | 无换行(STRING合并) | 複数項目を1レコードに連結 | ◎ | | CF-N002 | 正常 | 有换行(改行展开) | 1行入力→複数行出力(改行位置) | ◎ | | CF-N003 | 正常 | 項目内カンマ引用符付き | カンマ区切り | ◎ | | CF-N004 | 正常 | 引用符付き文字列 | "..."内のカンマ/改行を保持 | ◎ | | CF-N005 | 正常 | 空項目連続カンマ→空文字列処理 | ○ | | CF-N006 | 正常 | 全項目最大長 | 各項目がPIC定義ギリギリ | ◎ | | CF-A001 | 异常 | 改行位置がRECORD長超過 | 改行展開後1行が定義長超え | ◎ | | CF-A002 | 异常 | 引用符未閉じ | 閉じ"がない→残り全部1項目 | ◎ | ### ASCII→EBCDIC编码转换测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | AE-N001 | 正常 | ASCII→EBCDIC 全文字 | 印字可能文字全种正确转换 | ◎ | | AE-N002 | 正常 | EBCDIC→ASCII 全文字 | 逆方向一致确认 | ◎ | | AE-N003 | 正常 | 制御文字保持 | 改行/タブ等制御文字保持 | ◎ | | AE-A001 | 异常 | 変換表にない文字 | 未定義文字→替代文字/エラー | ◎ | | AE-A002 | 异常 | 往復一致性(ラウンドトリップ) | ASCII→EBCDIC→ASCII 一致 | ◎ | | AE-A003 | 异常 | 全角/半角混在の変換 | 全角文字がPIC X領域で化ける | ◎ | | AE-R001 | 确认 | 変換後レコード長 | 変換前後でレコード長一致 | ◎ | ### online/CICS测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | OL-N001 | 正常 | DFHCOMMAREA受信 | CALL側渡したデータを正しく受信 | ◎ | | OL-N002 | 正常 | MAP入出力 | MAPの送受信(SEND/RECEIVE MAP) | ◎ | | OL-N003 | 正常 | 画面入力→DB検索 | 画面入力値をキーにDB検索→結果表示 | ◎ | | OL-N004 | 正常 | 複数画面遷移 | 画面A→B→Cのデータ引継ぎ | ◎ | | OL-A001 | 异常 | DFHCOMMAREA長不一致 | CALL側と受信側の長さが異なる | ◎ | | OL-A002 | 异常 | トランザクションABEND | 異常発生時のROLLBACK確認 | ◎ | | OL-A003 | 异常 | MAP未定義項目参照 | MAPにない項目へのアクセス | ○ | | OL-R001 | 确认 | 応答時間 | オンライン処理の応答時間測定 | ◎ | ### DB操作/检索/SELECT条件测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | DB-N001 | 正常 | SELECT 1件 | WHERE条件で1件取得 | ◎ | | DB-N002 | 正常 | SELECT 複数件 | 条件に合う全件FETCH | ◎ | | DB-N003 | 正常 | INSERT(1件追加) | 新規レコードINSERT→SELECT確認 | ◎ | | DB-N004 | 正常 | UPDATE(更新) | 条件に合うレコード更新 | ◎ | | DB-N005 | 正常 | DELETE(削除) | 条件に合うレコード削除 | ◎ | | DB-N006 | 正常 | SELECT 0件 | 条件に合うレコードなし | ◎ | | DB-A001 | 异常 | キー重複INSERT | 一意キー違反→SQLCODEエラー | ◎ | | DB-A002 | 异常 | 存在しないテーブル | SELECT FROM 存在しない表 | ◎ | | DB-A003 | 异常 | NULL値処理 | NULL項目のMOVE/FETCH | ◎ | | DB-R001 | 确认 | SQLCODE確認 | 各SQL実行後のSQLCODE確認 | ◎ | ### 高级匹配测试(二级 / M:N组合 / 混合) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | AM-N001 | 正常 | 二级1:1→1:1 | 第一段匹配后→中间ファイル→第二段匹配 | ◎ | | AM-N002 | 正常 | 二级N:1→N:1 | 两段均为N:1匹配 | ◎ | | AM-N003 | 正常 | M:N→M条(主件对应) | 组合匹配输出M件 | ◎ | | AM-N004 | 正常 | M:N→N条(从件对应) | 组合匹配输出N件 | ◎ | | AM-N005 | 正常 | M:N→M×N条(笛卡尔积) | 组合匹配输出全组合 | ◎ | | AM-N006 | 正常 | 1:N+同key切(混合) | 匹配分支内有同键值key切 | ◎ | | AM-N007 | 正常 | 1:N+异key切(混合) | 匹配分支内有异键值key切 | ◎ | | AM-N008 | 正常 | 二级M:N→M:N | 第一段M:N匹配→中间文件→第二段M:N匹配 | ◎ | | AM-A001 | 异常 | 中间文件OPEN失败 | 第二段匹配时中间文件STATUS 35 | ◎ | | AM-A002 | 异常 | 二级匹配键不一致 | 第一段与第二段的键字段不同 | ◎ | | AM-R001 | 确认 | 各段匹配件数 | 第一段/第二段各自输出件数确认 | ◎ | ### 文件编成测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | FO-N001 | 正常 | SEQUENTIAL順次読書 | 先頭→最終まで全件正常READ | ◎ | | FO-N002 | 正常 | INDEXED(KSDS)キー指定READ | 主キーで特定レコードREAD | ◎ | | FO-N003 | 正常 | KSDS START命令 | STARTでキー位置指定→READ | ◎ | | FO-N004 | 正常 | RELATIVE(RRDS)RRN指定 | RELATIVE KEYで番号指定READ | ◎ | | FO-N005 | 正常 | LINE SEQUENTIAL読書 | 改行区切りテキストファイルREAD | ◎ | | FO-A001 | 异常 | VSAM OPEN STATUS 95 | ファイル状態不一致 | ◎ | | FO-A002 | 异常 | KSDSキー重複WRITE | 既存キーでWRITE→STATUS 22 | ◎ | | FO-A003 | 异常 | RRDS範囲外 | RRN定義済みRRN範囲外アクセス | ◎ | | FO-A004 | 异常 | ファイル編成不一致OPEN | 順次プログラムでVSAMをOPEN | ◎ | | FO-R001 | 确认 | FILE STATUS確認 | 各I/O後のSTATUS値確認 | ◎ | --- ## 2.3 横跨功能测试基准 ### 2.3.1 可变长入出力 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | VL-N001 | 正常 | RECORD IS VARYING(可变长记录) | 定义可变长记录,正常读写 | ◎ | | VL-N002 | 正常 | OCCURS DEPENDING ON(可变长表) | ODO表正常读写,DEPENDING值变化 | ◎ | | VL-N003 | 正常 | LINE SEQUENTIAL 文件读写 | 行可変长文件(LF结尾)一行ずつREAD | ◎ | | VL-N004 | 正常 | 固定长→可变长转换 | 固定长记录WRITE到可变长文件 | ◎ | | VL-N005 | 正常 | 可变长→固定长转换 | 可变长记录READ到固定长记录域 | ◎ | | VL-N006 | 正常 | RECORD VARYING FROM 1 TO 99 | 最小~最大件数之间的任意长度 | ◎ | | VL-A001 | 异常 | ODO最大值超限 | OCCURS DEPENDING ON超定义值 | ◎ | | VL-A002 | 异常 | 可变长记录截断 | WRITE时记录长度超文件定义 | ◎ | | VL-A003 | 异常 | LINE SEQUENTIAL 改行缺失 | 文件末尾无LF | ○ | | VL-A004 | 异常 | 可变长文件STATUS 47 | 记录长度与文件定义不一致 | ◎ | | VL-R001 | 确认 | RECORD LENGTH 确认 | WRITE后文件LRECL与定义一致 | ◎ | | VL-R002 | 确认 | ODO表件数确认 | DEPENDING ON值与实际件数一致 | ◎ | ### 2.3.2 循环处理 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | LP-N001 | 正常 | PERFORM VARYING(计数循环) | VARYING I FROM 1 BY 1 UNTIL I > N | ◎ | | LP-N002 | 正常 | PERFORM UNTIL(条件循环) | 条件达到后退出 | ◎ | | LP-N003 | 正常 | PERFORM TIMES(固定次数) | N回执行 | ◎ | | LP-N004 | 正常 | PERFORM THRU(段落跨入) | THRU指定多个段落 | ○ | | LP-N005 | 正常 | 内联PERFORM(END-PERFORM) | COBOL85内联循环 | ◎ | | LP-N006 | 正常 | 嵌套PERFORM(3层) | 内层PERFORM完整执行后外层继续 | ◎ | | LP-N007 | 正常 | EXIT PERFORM / EXIT PERFORM CYCLE | 中途退出/跳过本次循环 | ◎ | | LP-A001 | 异常 | PERFORM VARYING 0回 | 初始值已超终值→0回执行 | ◎ | | LP-A002 | 异常 | 无限循环(条件永不满足) | UNTIL条件永不成立→超时 | ○ | | LP-A003 | 异常 | PERFORM嵌套越界 | 内层PERFORM THRU跨入外层段落 | ◎ | | LP-A004 | 异常 | EXIT SECTION/GOBACK误用 | 循环内意外退出程序 | ◎ | | LP-R001 | 确认 | 循环回数确认 | 实际执行回数与期望一致 | ◎ | ### 2.3.3 数值精度 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | NP-N001 | 正常 | COMP-3小数位对齐 | PIC S9(7)V99与S9(9)V9的ADD对齐 | ◎ | | NP-N002 | 正常 | ROUNDED选项 | 计算结果四舍五入到指定小数位 | ◎ | | NP-N003 | 正常 | ON SIZE ERROR | 结果超过PIC定义域时触发 | ◎ | | NP-N004 | 正常 | 除算余数(REMAINDER) | DIVIDE...REMAINDER | ◎ | | NP-N005 | 正常 | COMP(二进制)符号处理 | S9(4) COMP的符号位正确 | ◎ | | NP-N006 | 正常 | COMPUTE中间精度 | 中间结果精度确保最终结果正确 | ◎ | | NP-N007 | 正常 | 符号付/符号なし混算 | S9(5)与9(5)的ADD/SUBTRACT | ○ | | NP-A001 | 异常 | 超过PIC定义域(无SIZE ERROR) | 高位截断→数据错误 | ◎ | | NP-A002 | 异常 | COMP-3符号误判 | 符号ニブル('C'/'D')不一致 | ◎ | | NP-A003 | 异常 | 除算0除 | DIVIDE BY ZERO→ABEND | ◎ | | NP-A004 | 异常 | COMP赋值溢出 | 超范围的数值MOVE到COMP字段 | ◎ | | NP-R001 | 确认 | 演算结果精度一致 | 同一演算反复执行→结果一致 | ◎ | | NP-R002 | 确认 | 小数点位置一致 | 编辑字段(PIC Z,9等)十进制位正确 | ◎ | ### 2.3.4 日文文字处理 #### 2.3.4.1 PIC N 全角字段 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | J-N001 | 正常 | PIC N全角转记 | 全角英数/汉字正确存储 | ◎ | | J-N002 | 正常 | PIC N比较(等值) | 同全角字符串→EQUAL | ◎ | | J-N003 | 正常 | PIC N比较(异值) | 异→NOT EQUAL | ◎ | | J-N004 | 正常 | PIC N→PIC X转记 | 全角→半角域(防乱码) | ◎ | | J-N005 | 正常 | PIC N DISPLAY-1 | I/O确认 | ○ | #### 2.3.4.2 半角假名 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | J-K001 | 正常 | 半角假名转记 | アイウエオ正确转记 | ◎ | | J-K002 | 正常 | 半角假名比较 | アイウエオ比较 | ○ | | J-K003 | 正常 | 半角假名排序 | 排序顺序确认 | ◎ | | J-K004 | 异常 | 全角/半角混用 | 混用数据处理 | ◎ | | J-K005 | 异常 | 半角假名排序顺序差异 | EBCDIC顺序 vs SJIS顺序 vs 五十音顺序 | ◎ | #### 2.3.4.3 外字(厂商别) | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | J-G001 | 正常 | JEF外字(日立) | JEF外字领域读写 | ◎ | | J-G002 | 正常 | KEIS外字(富士通) | KEIS外字领域 | ◎ | | J-G003 | 正常 | IBM外字 | IBM扩展文字 | ◎ | | J-G004 | 异常 | 外字转换(SJIS→EBCDIC) | 厂商间外字差异 | ◎ | | J-G005 | 异常 | 未定义外字 | 未定义→替代文字 | ○ | | J-G006 | 异常 | 中文汉字与日文外字冲突 | 中日混在环境 | ○ | #### 2.3.4.4 Shift-JIS 5C/7C | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | J-D001 | 正常 | 第2字节5C | 「ソ」「噂」「能」 | ◎ | | J-D002 | 正常 | 第2字节7C | 「本」「問」 | ◎ | | J-D003 | 正常 | 5C/7C字符串长度 | 字节长度≠字符数 | ◎ | | J-D004 | 异常 | 5C/7C误转换 | 误转成\或\| | ◎ | #### 2.3.4.5 编码转换 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | J-X001 | 正常 | EBCDIC→SJIS转换 | 全字符正确 | ◎ | | J-X002 | 正常 | SJIS→UTF-8转换 | UTF8转换 | ◎ | | J-X003 | 正常 | 3段转换一致性 | 往返对比 | ○ | | J-X004 | 异常 | 不可转换字符 | 替代字符/错误 | ◎ | | J-X005 | 异常 | 全角半角转换精度 | 全角数字→半角数字等业务数据 | ◎ | | J-X006 | 正常 | CODEPAGE指定转换(IBM-930→SJIS) | CODEPAGE经由的文字转换 | ◎ | | J-X007 | 异常 | CODEPAGE未定义文字 | 转换表中不存在的文字→替代文字 | ◎ | | J-X008 | 异常 | ASCII→EBCDIC映射误差 | UNISYS等ASCII系主机 | ○ | #### 2.3.4.6 全角空格/编辑 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | J-S001 | 正常 | 全角空格TRIM | TRIM对全角空格 | ◎ | | J-S002 | 正常 | 全角空格INSPECT | INSPECT计数 | ○ | | J-S003 | 异常 | 含全角空格比较 | "ABC" vs "A BC" | ○ | ### 2.3.5 日期处理 #### 2.3.5.1 西历日期 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | D-N001 | 正常 | 通常日期(YYYYMMDD) | 正常日期处理 | ◎ | | D-N002 | 正常 | 闰年判定 | 2000/2004/2100年 | ◎ | | D-N003 | 正常 | 月末日 | 1月31日/2月28日/2月29日 | ◎ | | D-N004 | 正常 | 日期计算(±日) | FUNCTION INTEGER-OF-DATE | ◎ | | D-N005 | 正常 | 日期比较 | 日期前后比较 | ○ | | D-A001 | 异常 | 日期逻辑异常 | 2月30日/4月31日 | ◎ | | D-A002 | 异常 | 西历/和历混在 | YYYYMMDD与RYYMMDD混用 | ◎ | | D-A003 | 异常 | 2桁年(YYMMDD) | 2000年区分问题(YYMMDD不能区分2000/1900) | ◎ | | D-A004 | 异常 | 闰年边界 | 2000/02/28→29→03/01 | ◎ | #### 2.3.5.2 和历(元号)处理 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | D-W001 | 正常 | 令和→西历 | R010501 = 2019/05/01 | ◎ | | D-W002 | 正常 | 平成→西历 | H010108 = 1989/01/08 | ◎ | | D-W003 | 正常 | 昭和→西历 | S611231 = 1986/12/31 | ◎ | | D-W004 | 正常 | 大正→西历 | T011231 = 1912/12/31 | ○ | | D-W005 | 正常 | 明治→西历 | M450129 = 1912/01/29 | ○ | | D-W006 | 正常 | 元号边界(令和初日) | 平成年末日→令和初日 2019/04/30→05/01 | ◎ | | D-W007 | 正常 | 元号边界(平成年初日) | 昭和的末日→平成年初日 1989/01/07→01/08 | ◎ | | D-W008 | 异常 | 不存在的和历日期 | R元年度(R元年)扱い | ○ | #### 2.3.5.3 日期格式转换 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | D-F001 | 正常 | YYYYMMDD→YYMMDD | 4桁→2桁 | ◎ | | D-F002 | 正常 | YYYYMMDD→和历 | 西历→RYYMMDD | ◎ | | D-F003 | 正常 | 和历→西历 | RYYMMDD→YYYYMMDD | ◎ | | D-F004 | 异常 | 日期编辑文字 | 元号混じりの編集出力 | ○ | ### 2.3.6 RERUN / RESTART 测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | RR-N001 | 正常 | 同一数据再执行 | 幂等性确认(不重复更新) | ◎ | | RR-A001 | 异常 | 输出文件未删除 | 再执行STATUS 95 | ◎ | | RR-A002 | 异常 | 中间ABEND→RESTART | 中间状态重新开始 | ◎ | | RR-A003 | 异常 | ABEND时输出文件状态 | 中途废弃/部分输出 | ◎ | ### 2.3.7 排他/竞争测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | EX-N001 | 正常 | 同时READ | 多个JOB同时READ(DISP=SHR),正常读取,不报STATUS 47 | ◎ | | EX-A001 | 异常 | 同时WRITE冲突 | STATUS 48 | ◎ | | EX-A002 | 异常 | DISP=SHR违反 | STATUS 95 | ◎ | | EX-A003 | 异常 | OPEN中他JOB DELETE | STATUS 95/97 | ○ | ### 2.3.8 性能/容量测试 | 编号 | 区分 | 项目 | 内容 | 优先级 | |------|------|------|------|--------| | PV-N001 | 正常 | 10万件处理 | 批量处理性能 | ○ | | PV-N002 | 正常 | SORT 100万件 | SORT RC确认 | ○ | | PV-N003 | 正常 | VSAM大量READ | CI/CA分割性能 | ○ | | PV-A001 | 异常 | SORT领域不足 | RC=20 | ○ | --- ## 2.4 测试用例详细清单(部分代表性用例) ### SORT 用例 | 编号 | 目标类型 | 测试名 | 输入 | 期望结果 | |------|---------|-------|------|---------| | TC-N035 | SORT | SORT USING/GIVING | 10件升序 | 升序排序确认 | | TC-N036 | SORT | SORT INPUT PROCEDURE | 10件→筛选5件 | 筛选后仅5件排序 | | TC-N037 | SORT | SORT OUTPUT PROCEDURE | 10件→汇总 | 汇总值正确 | | TC-A041 | SORT | SORT区不足 | 100万件 | RC=20 | | TC-A042 | SORT | INPUT未RELEASE | 数据不RELEASE | 数据丢失 | ### MERGE 用例 | 编号 | 目标类型 | 测试名 | 输入 | 期望结果 | |------|---------|-------|------|---------| | TC-N044 | MERGE | MERGE 2文件合并 | 2个排序后文件 | 正确合并输出 | | TC-N045 | MERGE | MERGE 重复键 | 同键2件来自不同文件 | 同键顺序保持 | | TC-A048 | MERGE | 输入未排序 | MERGE未排序文件 | 误合并结果 | ### 分支/内部表/CALL/分割 用例 | 编号 | 目标类型 | 测试名 | 输入 | 期望结果 | |------|---------|-------|------|---------| | TC-N046 | IF分支 | IF 2路分支 | IF条件成立/不成立 | 各自处理正确 | | TC-N047 | IF分支 | IF 88-level条件名 | 88条件直接判断 | 正确分支 | | TC-N048 | EVALUATE | EVALUATE多值 | 多个WHEN覆盖 | 正确分支 | | TC-N049 | EVALUATE | EVALUATE WHEN OTHER | 未匹配→OTHER | 默认处理 | | TC-N050 | 内部表 | SEARCH ALL等值查找(找到) | KEY等于目标存在 | 找到→INDEX定位 | | TC-N051 | 内部表 | SEARCH ALL等值查找(未找到) | KEY等于目标不存在 | 未找到→INDEX超限 | | TC-N052 | CALL | CALL USING参数传递 | CALL 'SUBPGM' USING A B | 参数正确传递 | | TC-N053 | CALL | IS INITIAL指定 | CALL后WS值 | 每次初始状态 | | TC-N054 | 分割 | 50分割(正好50件) | 50件输入 | 各1文件1件 | | TC-A049 | IF分支 | IF未闭合 | 缺少END-IF | 语法错误编译错误 | | TC-A050 | 内部表 | INDEX越界 | OCCURS范围外访问 | ABEND | | TC-A051 | CALL | CALL不存在程序 | CALL 'NOPGM' | ABEND | | TC-A052 | 编码转换 | CODEPAGE未定义文字 | 转换表中不存在的文字 | 替代文字输出 | ### 日期处理 用例 | 编号 | 目标类型 | 测试名 | 输入 | 期望结果 | |------|---------|-------|------|---------| | TC-N038 | 日期 | 闰年判定 | 2000/02/29 | 正常处理 | | TC-N039 | 日期 | 非闰年判定 | 2100/02/29 | 错误 | | TC-N040 | 日期 | 和历转换(令和初日) | 2019/05/01 → R010501 | 正确转换 | | TC-N041 | 日期 | 和历转换(平成年末日) | 2019/04/30 → H310430 | 正确转换 | | TC-A043 | 日期 | 不存在的日期 | 2月30日 | 错误 | | TC-A044 | 日期 | 日期逻辑异常 | 4月31日 | 错误 | ### SYSIN/高级匹配 用例 | 编号 | 目标类型 | 测试名 | 输入 | 期望结果 | |------|---------|-------|------|---------| | TC-N055 | SYSIN读取 | SYSIN正常参数读取 | 标准参数卡5张 | 全部正确解析 | | TC-N056 | 二级M:N→M:N | 二级M:N匹配 | M:N第一段→中间文件→M:N第二段 | 正确匹配 | | TC-A053 | SYSIN读取 | SYSIN参数格式错误 | 非法参数 | 格式错误处理 | ### 不平衡/排他/RERUN 用例 | 编号 | 目标类型 | 测试名 | 输入 | 期望结果 | |------|---------|-------|------|---------| | TC-N042 | 匹配 | 1:N不平衡(1 vs 100万) | R01=1 R02=100万 | 正常处理 | | TC-N043 | 匹配 | N:1不平衡(100万 vs 1) | R01=100万 R02=1 | 正常处理 | | TC-A045 | 排他 | 同时WRITE | 2JOB同时WRITE同文件 | STATUS 48 | | TC-A046 | 排他 | 再执行(文件未删除) | 同一文件再WRITE | STATUS 95 | | TC-A047 | RESTART | 中途ABEND→RESTART | ABEND→再执行 | 正常RESTART |