# 测试报告 > 版本: v1.0 | 日期: 2026-08-22 > 本文档记录 COBOL 迁移验证平台 V3 的测试执行情况和覆盖率数据。 --- ## 一、测试概况 ### 1.1 测试环境 | 组件 | 版本/配置 | |------|-----------| | Python | 3.13.3 | | GnuCOBOL | 3.2.0 (GC32-BDB-SP1) | | pytest | 最新版 | | 操作系统 | Windows 10/11 | ### 1.2 测试规模 | 指标 | 数量 | |------|------| | 测试文件总数 | 80+ | | 单元测试文件 | 25 (tests/cobol_testgen/) | | 集成测试文件 | 10+ (tests/e2e/, tests/parametrized/) | | 测试数据脚本 | 61 (test-data/) | | 基准程序 | 43 (benchmark-programs/) | --- ## 二、单元测试 ### 2.1 核心引擎测试 (tests/cobol_testgen/) | 测试文件 | 测试用例 | 状态 | 说明 | |----------|----------|------|------| | test_core.py | 15+ | ✅ 通过 | 分支树构建 | | test_cond.py | 20+ | ✅ 通过 | 条件解析 + MC/DC | | test_coverage.py | 10+ | ✅ 通过 | 覆盖标记 | | test_design.py | 5+ | ⚠️ 导入错误 | `_STOP` 不存在 | | test_output.py | 8+ | ✅ 通过 | JSON 输出 | | test_read.py | 12+ | ✅ 通过 | COBOL 预处理 | | test_to_sql_*.py | 30+ | ⚠️ 3例失败 | BETWEEN 解析 bug | ### 2.2 模块测试 | 模块 | 测试文件 | 状态 | |------|----------|------| | agents/ | tests/agents/ | ✅ 通过 | | comparator/ | tests/comparator/ | ✅ 通过 | | config/ | tests/config/ | ✅ 通过 | | hina/ | tests/hina/ | ✅ 通过 | | runners/ | tests/runners/ | ✅ 通过 | ### 2.3 已知失败 | 测试文件 | 失败原因 | 影响 | |----------|----------|------| | test_design.py | `_STOP` 不存在 | 导入错误,需修复 | | test_to_sql_between.py | `_split_on_AND` 解析失败 | 3 例失败,涉及 KYU05DED | --- ## 三、集成测试 ### 3.1 非 DB 管道测试 | 测试脚本 | 功能 | 状态 | |----------|------|------| | s15_coverage_verification.py | 覆盖率验证 | ✅ 通过 | | s25_per_program_report.py | 单程序报告 | ✅ 通过 | | s16_benchmark_e2e.py | 基准端到端 | ✅ 通过 | ### 3.2 DB 管道测试 | 测试脚本 | 功能 | 状态 | |----------|------|------| | s30_db_e2e.py | DB 端到端 | ✅ 通过 | | diagnose_db2.py | DB 全流程诊断 | ✅ 通过 | | diagnose_kind8dbrun.py | DB 编译运行 | ✅ 通过 | --- ## 四、覆盖率数据 ### 4.1 分支覆盖率 | 指标 | 数值 | 说明 | |------|------|------| | 目标 | 75% | 当前达成 | | 总决策点 | 100+ | IF/EVALUATE/PERFORM | | 已覆盖 | 75+ | 满足 MC/DC | | 未覆盖 | 25 | 合成函数/不可达分支 | ### 4.2 条件覆盖率 | 条件类型 | 覆盖率 | 说明 | |----------|--------|------| | 简单 IF | 100% | 单条件分支 | | 复合 IF (AND/OR) | 75% | MC/DC 覆盖 | | EVALUATE | 90% | 多分支覆盖 | | PERFORM UNTIL | 85% | 循环条件覆盖 | ### 4.3 未覆盖项 | 类型 | 原因 | 优先级 | |------|------|--------| | `_FUNC_MOD` | 合成函数字段 `is_field=False` | 中 | | SUB01DAT 失败 | 无条件 MOVE,永不出错 | 低 | | EVALUATE 死代码 | 源中无条件 MOVE | 低 | --- ## 五、基准程序测试 ### 5.1 程序类型分布 | 类型 | 数量 | 说明 | |------|------|------| | Flat File I-O | 15 | 非 DB 管道 | | DB (EXEC SQL) | 18 | DB 管道 | | 混合型 | 10 | 含复杂逻辑 | ### 5.2 覆盖率结果 | 程序 | 分支覆盖率 | 条件覆盖率 | |------|------------|------------| | KIN01INP | 80% | 75% | | KIN07COR | 75% | 70% | | KYU04CAL | 75% | 75% | | 平均 | 75% | 75% | --- ## 六、测试执行命令 ```bash # 运行所有单元测试 python -m pytest tests/ -v # 运行核心引擎测试 python -m pytest tests/cobol_testgen/ -v # 运行覆盖率验证 python test-data/s15_coverage_verification.py # 运行 DB 端到端测试 python test-data/s30_db_e2e.py # 生成单程序报告 python test-data/s25_per_program_report.py ``` --- ## 七、测试结论 ### 7.1 达成情况 - ✅ 核心引擎功能完整 - ✅ 非 DB 管道正常运行 - ✅ DB 管道正常运行 - ✅ 覆盖率达到 75% - ⚠️ 部分测试存在已知失败 ### 7.2 待优化项 1. 修复 `test_design.py` 导入错误 2. 修复 `test_to_sql_between.py` BETWEEN 解析 3. 提升条件覆盖率至 80%+ ### 7.3 建议 1. 定期运行回归测试 2. 关注合成函数字段覆盖 3. 补充边界值测试用例