Files

570 lines
31 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试基准说明
> 出典: 程序分类及测试基准.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 34VSAM文件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 | 正常 | INSERT1件追加) | 新規レコード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 | 正常 | INDEXEDKSDS)キー指定READ | 主キーで特定レコードREAD | ◎ |
| FO-N003 | 正常 | KSDS START命令 | STARTでキー位置指定→READ | ◎ |
| FO-N004 | 正常 | RELATIVERRDSRRN指定 | 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 | 正常 | 内联PERFORMEND-PERFORM | COBOL85内联循环 | ◎ |
| LP-N006 | 正常 | 嵌套PERFORM3层) | 内层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同时READDISP=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 |