# 安徽运八需求 覆盖率审计

> 审计日期: 2026-07-13
> 审计范围: 需求文档 (requirement.md) → 测试点 (103个) → 测试用例 (128个) → 风险评估 (2项)
> 审计方法: 四维追溯矩阵 + 风险覆盖核查 + 覆盖热力图

---

## 覆盖概览

| 指标 | 值 | 目标 | 状态 |
| :--- | :---: | :---: | :---: |
| 需求→测试点覆盖率 | 93.75% (45/48) | >= 95% | **FAIL** |
| P0测试点→用例覆盖率 | 100% (25/25) | 100% | **PASS** |
| P1测试点→用例覆盖率 | 100% (50/50) | >= 90% | **PASS** |
| P0风险覆盖率 | N/A (无P0风险项) | 100% | **PASS** |
| P1风险覆盖率 | 100% (1/1) | >= 90% | **PASS** |
| 过度覆盖率 | 0% (0/128) | <= 5% | **PASS** |

**结论**: 需求→测试点覆盖率 93.75% 未达到 95% 门槛，存在3个覆盖缺口需补充。P0 测试点→用例覆盖率 100% 达标，风险覆盖率达标，无过度覆盖。

---

## 覆盖缺口

### 缺口 GAP-001: 第一次上报列表字段完整性 — 无测试点

- **需求条目**: REQ-B-07 (需求文档 Section 2.2 "列表字段")
- **缺口类型**: 无测试点覆盖
- **风险等级**: P1
- **详细说明**: 需求明确列出第一次上报列表页的14个字段（货源单号、运单号、托运单号、车牌号、司机姓名、托运方名称、业务类型、货物名称、装货地址、卸货地址、运输里程、合同编号、上报状态、操作）。其他模块（看板/第二次/第三次/ETC/申诉/日志）均有列表字段完整性的测试点（TP-A-008, TP-C-004, TP-D-002, TP-E-002, TP-F-002, TP-G-005），但第一次上报模块缺少对应的列表字段完整性测试点。现有 TP-A-008 覆盖的是看板列表字段（不同字段集合），TP-B-011/012 覆盖的是详情弹窗字段（非列表）。
- **对比**: 同为"列表字段"需求项，第二次上报有 TP-C-004，第三次上报有 TP-D-002，ETC 有 TP-E-002，仅第一次上报缺失。
- **建议**: 新增测试点 TP-B-020，验证第一次上报列表页14个字段完整且顺序与需求一致。对应新增用例覆盖。

### 缺口 GAP-002: 第二次上报自动重试机制 — 无测试点

- **需求条目**: REQ-C-05 (需求文档 Section 2.3 "特殊说明" 第4条)
- **缺口类型**: 无测试点覆盖
- **风险等级**: P1
- **详细说明**: 需求明确要求"若上报失败，系统会自动重试（最多3次），若仍失败则告警通知运营人员"。其他上报阶段均已有自动重试测试点（第一次: TP-B-007, 第三次: TP-D-007, ETC: TP-E-006），但第二次上报模块缺少对应的自动重试测试点。第二次上报是核验项最多的阶段（7类核验），也是最容易出现异常的环节，重试机制缺失覆盖是高风险的遗漏。
- **对比**: 三阶段+ETC共4个上报入口，第一次/第三次/ETC均有重试测试点，仅第二次缺失。
- **建议**: 新增测试点 TP-C-023，验证第二次上报失败后自动重试最多3次、间隔递增、全部失败后告警。对应新增用例覆盖。

### 缺口 GAP-003: 第二次上报详情弹窗分组字段完整性 — 无测试点

- **需求条目**: REQ-C-08 (需求文档 Section 2.3 "详情弹窗字段分组")
- **缺口类型**: 无测试点覆盖
- **风险等级**: P2
- **详细说明**: 需求明确定义第二次上报详情弹窗的6个分组，其中"资金流水信息"分组包含10个必选字段（支付金额、支付方式、支付时间、付款方名称、收款方名称、收款人、收款账号、收款账号类型、流水号、支付状态）和"车辆轨迹信息"分组包含6个必选字段（定位类型、定位时间、定位地点、经度、纬度、轨迹类型）。现有 TP-C-004 覆盖的是列表字段（14个列表字段），而非详情弹窗分组字段。其他模块的详情弹窗均有字段完整性测试点（第一次: TP-B-011/012, 第三次: TP-D-003, ETC: TP-E-003, 申诉: TP-F-004），仅第二次上报缺失。
- **对比**: 同为"详情弹窗字段分组"需求项，第一次上报有 TP-B-011/012，第三次上报有 TP-D-003，仅第二次上报缺失独立的详情弹窗测试点。
- **建议**: 新增测试点 TP-C-024，验证第二次上报详情弹窗6个分组（运单/托运方/收货方/资金流水/车辆轨迹/异常）的字段完整性和数据正确性。资金流水10字段和车辆轨迹6字段需重点验证。对应新增用例覆盖。

---

## 需求→测试点 追溯矩阵

### 模块A: 上报运单看板 (7条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-A-01 | 看板模糊搜索(运单号/托运单号/货源单号) | TP-A-001 | **PASS** |
| REQ-A-02 | 看板按上报阶段筛选(全部/第一次/第二次/第三次) | TP-A-002 | **PASS** |
| REQ-A-03 | 看板按核验状态筛选(全部/异常/通过) | TP-A-003 | **PASS** |
| REQ-A-04 | 看板按申诉状态筛选(全部/未申诉/申诉中/申诉通过/申诉驳回) | TP-A-004 | **PASS** |
| REQ-A-05 | 操作按钮(查询/重置/导出) | TP-A-001, TP-A-006, TP-A-007 | **PASS** |
| REQ-A-06 | 看板列表14字段 | TP-A-008 | **PASS** |
| REQ-A-07 | 操作列(申诉/进度/详情) + 详情弹窗分组 | TP-A-010, TP-A-011 | **PASS** |

### 模块B: 第一次上报-装货完成 (9条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-B-01 | 装货完成后自动触发(仅安徽税源地) | TP-B-001, TP-B-002 | **PASS** |
| REQ-B-02 | 上报数据包含7个子对象必选字段 | TP-B-001, TP-B-003 | **PASS** |
| REQ-B-03 | 核验通过后自动调用修改字段接口 | TP-B-006 | **PASS** |
| REQ-B-04 | 上报失败自动重试最多3次 | TP-B-007 | **PASS** |
| REQ-B-05 | 全部重试失败后通知运营人员 | TP-B-008 | **PASS** |
| REQ-B-06 | 上报状态规则+标签颜色 | TP-B-009, TP-B-010 | **PASS** |
| **REQ-B-07** | **第一次上报列表14字段** | **无** | **GAP** |
| REQ-B-08 | 详情弹窗按子对象分组(含异常信息) | TP-B-011, TP-B-012, TP-B-013 | **PASS** |
| REQ-B-09 | 手动上传按钮(仅上传失败状态) | TP-B-009 | **PASS** |

### 模块C: 第二次上报-打款完成 (10条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-C-01 | 打款完成后自动触发 | TP-C-001 | **PASS** |
| REQ-C-02 | 上报数据(运抵/资金流水/合同/轨迹) | TP-C-001 | **PASS** |
| REQ-C-03 | 资金流水单号重复系统自动检查 | TP-C-014, TP-C-015 | **PASS** |
| REQ-C-04 | 补传轨迹功能 | TP-C-022 | **PASS** |
| **REQ-C-05** | **上报失败自动重试最多3次+告警** | **无(告警部分间接覆盖)** | **GAP** |
| REQ-C-06 | 第二次上报列表字段 | TP-C-004 | **PASS** |
| REQ-C-07 | 收款账号类型(个人/对公)+标签颜色 | TP-C-005 | **PASS** |
| **REQ-C-08** | **详情弹窗6分组字段完整性** | **无** | **GAP** |
| REQ-C-09 | 7类核验(通过+异常各14场景) | TP-C-006~TP-C-019 | **PASS** |
| REQ-C-10 | 第二次上报依赖第一次完成 | TP-C-020 | **PASS** |

### 模块D: 第三次上报-开票完成 (7条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-D-01 | 开票完成后触发(依赖第二次) | TP-D-001, TP-D-005 | **PASS** |
| REQ-D-02 | 上报数据(运单+发票+油气发票) | TP-D-001, TP-D-004 | **PASS** |
| REQ-D-03 | 增值税发票验证失败处理 | TP-D-006 | **PASS** |
| REQ-D-04 | 上报失败自动重试最多3次+告警 | TP-D-007 | **PASS** |
| REQ-D-05 | 第三次上报列表11字段 | TP-D-002 | **PASS** |
| REQ-D-06 | 详情弹窗字段分组(发票17字段+油气发票) | TP-D-003, TP-D-008 | **PASS** |
| REQ-D-07 | 发票金额精度校验(价税合计2位小数) | TP-D-010 | **PASS** |

### 模块E: ETC发票上传 (6条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-E-01 | ETC发票上传触发 | TP-E-001 | **PASS** |
| REQ-E-02 | 税务抵扣前置条件 | TP-E-004 | **PASS** |
| REQ-E-03 | ETC发票验证失败处理 | TP-E-005 | **PASS** |
| REQ-E-04 | 上报失败自动重试最多3次+告警 | TP-E-006 | **PASS** |
| REQ-E-05 | ETC上传列表11字段 | TP-E-002 | **PASS** |
| REQ-E-06 | 详情弹窗3分组(运单7+ETC18+异常4) | TP-E-003 | **PASS** |

### 模块F: 异常申诉功能 (5条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-F-01 | 申诉完整闭环(异常查询→发起→反馈→判断) | TP-F-001, TP-F-003 | **PASS** |
| REQ-F-02 | 申诉列表13字段 | TP-F-002 | **PASS** |
| REQ-F-03 | 申诉详情弹窗5分组字段 | TP-F-004 | **PASS** |
| REQ-F-04 | 申诉复核说明(省平台复核,驳回可重新申诉) | TP-F-006 | **PASS** |
| REQ-F-05 | 异常代码一览表映射 | TP-F-011 | **PASS** |

### 模块G: 上报日志 (4条需求)

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-G-01 | 查询条件(单号/阶段/结果/时间范围) | TP-G-001~TP-G-004 | **PASS** |
| REQ-G-02 | 日志列表9字段 | TP-G-005 | **PASS** |
| REQ-G-03 | 详情弹窗(完整请求/响应报文) | TP-G-006 | **PASS** |
| REQ-G-04 | 所有上报接口调用记录全覆盖 | TP-G-007 | **PASS** |

### 跨模块需求

| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-X-01 | 三阶段依赖链完整性 | TP-B-005, TP-C-020, TP-D-005, TP-X-001 | **PASS** |
| REQ-X-02 | 非安徽税源地不上报 | TP-B-002, TP-X-004 | **PASS** |
| REQ-X-03 | 多省份数据隔离 | TP-X-005 | **PASS** |

---

## 测试点→用例 追溯矩阵

> 完整103条追溯见测试用例文件内置映射表（第199-305行），以下为P0测试点专项核查。

### P0测试点覆盖确认 (25/25 = 100%)

| P0测试点 | 描述 | 对应用例 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| TP-A-001 | 看板模糊搜索 | AH_REPORT_DASH_001, 002, 003 | **PASS** |
| TP-B-001 | 装货完成后自动触发第一次上报 | AH_REPORT_R1_001 | **PASS** |
| TP-B-002 | 仅安徽税源地运单触发 | AH_REPORT_R1_002, 003 | **PASS** |
| TP-B-004 | 省份代码=34(防历史缺陷) | AH_REPORT_R1_003, 006 | **PASS** |
| TP-B-005 | 第一次是后续前置条件(防历史缺陷) | AH_REPORT_R1_007, 008 | **PASS** |
| TP-B-014 | 第一次上报幂等性(防历史缺陷) | AH_REPORT_R1_013, 014, CROSS_006 | **PASS** |
| TP-C-001 | 打款完成后自动触发第二次上报 | AH_REPORT_R2_001 | **PASS** |
| TP-C-002 | 资金流水数据来源支付流水表(防历史缺陷) | AH_REPORT_R2_002 | **PASS** |
| TP-C-003 | 财务修改金额后使用最新金额(防历史缺陷) | AH_REPORT_R2_003 | **PASS** |
| TP-C-006 | 运单重复核验—通过场景 | AH_REPORT_R2_005 | **PASS** |
| TP-C-007 | 运单重复核验—异常场景 | AH_REPORT_R2_006 | **PASS** |
| TP-C-020 | 第二次依赖第一次完成(防历史缺陷) | AH_REPORT_R2_024 | **PASS** |
| TP-C-021 | 第二次上报幂等性(防历史缺陷) | AH_REPORT_R2_025, CROSS_006 | **PASS** |
| TP-D-001 | 开票完成后触发第三次上报 | AH_REPORT_R3_001 | **PASS** |
| TP-D-005 | 第三次依赖第二次完成(防历史缺陷) | AH_REPORT_R3_006, 007 | **PASS** |
| TP-E-001 | ETC发票上传触发 | AH_REPORT_ETC_001 | **PASS** |
| TP-E-004 | 税务抵扣前置条件 | AH_REPORT_ETC_004 | **PASS** |
| TP-F-001 | 申诉完整闭环 | AH_REPORT_APL_001 | **PASS** |
| TP-F-003 | 申诉状态流转全路径 | AH_REPORT_APL_004, 005 | **PASS** |
| TP-G-001 | 日志按单号模糊搜索 | AH_REPORT_LOG_001, 002 | **PASS** |
| TP-G-002 | 日志按上报阶段筛选 | AH_REPORT_LOG_003 | **PASS** |
| TP-X-001 | 三阶段依赖链端到端(防历史缺陷) | AH_REPORT_CROSS_001 | **PASS** |
| TP-X-002 | 多模块数据一致性(防历史缺陷) | AH_REPORT_CROSS_002 | **PASS** |
| TP-X-003 | 安徽运八全流程完整链路 | AH_REPORT_CROSS_003 | **PASS** |
| TP-X-004 | 非安徽税源地全流程不上报 | AH_REPORT_CROSS_004 | **PASS** |

### P1测试点覆盖核查 (50/50 = 100%)

全部50个P1测试点均有对应用例覆盖，详见测试用例文件内置映射表。抽查5个高风险P1测试点：

| P1测试点 | 描述 | 对应用例 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| TP-B-003 | 第一次上报建单信息格式校验 | AH_REPORT_R1_004, 005, 021 (3条) | **PASS** |
| TP-B-007 | 第一次上报自动重试3次 | AH_REPORT_R1_010 | **PASS** |
| TP-C-019 | 轨迹合规核验—异常(点位不足) | AH_REPORT_R2_022, 023 (2条) | **PASS** |
| TP-D-006 | 增值税发票验证失败 | AH_REPORT_R3_008, 009 (2条) | **PASS** |
| TP-E-007 | ETC税额计算精度(资损风险) | AH_REPORT_ETC_008 | **PASS** |

---

## 风险覆盖审计

### 风险矩阵覆盖

| 风险ID | 等级 | 风险描述 | 覆盖测试点 | 覆盖用例 | 覆盖状态 |
| :--- | :---: | :--- | :--- | :--- | :---: |
| RISK-FINANCIAL | P1 | ETC税额计算/发票金额精度/打款金额数据溯源，涉及资损 | TP-C-002, TP-C-003, TP-D-010, TP-E-007 | AH_REPORT_R2_002, R2_003, R3_012, ETC_008 | **PASS** |
| RISK-AVAILABILITY | P2 | 监管平台接口超时/弱网/服务不可用导致上报中断 | TP-B-007, TP-B-015, TP-B-016, TP-D-007, TP-E-006, TP-F-013 | AH_REPORT_R1_010, R1_015, R1_016, R3_010, ETC_007, APL_015 | **PASS** |

### 风险覆盖统计

| 风险等级 | 总数 | 已覆盖 | 覆盖率 | 目标 | 状态 |
| :--- | :---: | :---: | :---: | :---: | :---: |
| P0 | 0 | 0 | N/A | 100% | **PASS** |
| P1 | 1 | 1 | 100% | >= 90% | **PASS** |
| P2 | 1 | 1 | 100% | — | **PASS** |

---

## 过度覆盖审计

### 反向追溯: 用例 → 需求

全部128条测试用例均可追溯至明确的测试点，所有测试点均可追溯至需求条目或历史缺陷（历史缺陷本身源于需求Bug）。

| 检查项 | 结果 |
| :--- | :---: |
| 总用例数 | 128 |
| 可追溯用例 | 128 |
| 无需求依据的用例 | 0 |
| 冗余/重复用例 | 0 |
| 过度覆盖率 | 0% |
| 目标(<= 5%) | **PASS** |

**说明**: 所有用例均通过"对应TP-xxx"或"[AI修正: 历史缺陷防御]"标记明确了来源。历史缺陷用例（BUG-202607-01/02/03/04）均有对应的需求依赖项作为依据，不属于过度覆盖。

---

## 覆盖热力图

| 模块 | 需求条目 | 测试点 | 测试用例 | 覆盖密度 | 评价 |
| :--- | :---: | :---: | :---: | :---: | :--- |
| A 上报运单看板 | 7 | 14 | 18 | **高** | 全维度覆盖，包含UI/权限/边界/空状态 |
| B 第一次上报 | 9 | 19 | 23 | **高** | 全维度覆盖，但列表字段完整性缺失(GAP-001) |
| C 第二次上报 | 10 | 22 | 26 | **中高** | 7类核验全覆盖(**亮点**)，但重试和详情弹窗缺失(GAP-002/003) |
| D 第三次上报 | 7 | 11 | 14 | **中高** | 主流程+异常+金额精度全覆盖 |
| E ETC发票上传 | 6 | 9 | 12 | **中高** | 税额精度(资损)专项覆盖(**亮点**)，多发票场景覆盖 |
| F 异常申诉 | 5 | 13 | 17 | **高** | 完整闭环+状态流转+权限+异常代码映射全覆盖(**亮点**) |
| G 上报日志 | 4 | 9 | 11 | **中高** | 搜索/筛选/报文详情/审计全覆盖 |
| X 跨模块 | — | 6 | 7 | **高** | 端到端链路+数据一致性+省份隔离全覆盖 |

### 覆盖盲区

| 盲区 | 位置 | 影响 |
| :--- | :--- | :--- |
| 第一次上报列表字段完整性 | 模块B | 列表字段渲染错误无法被测试捕获（如字段缺失、顺序错乱、格式错误） |
| 第二次上报自动重试 | 模块C | 最易出异常的阶段缺失重试验证，依赖链断裂后无自动恢复覆盖 |
| 第二次上报详情弹窗分组完整性 | 模块C | 资金流水10字段和车辆轨迹6字段在详情弹窗中的展示未验证 |

---

## 历史缺陷防御覆盖核查

| 历史缺陷ID | 防御测试点数 | 防御用例数 | 覆盖状态 |
| :--- | :---: | :---: | :---: |
| BUG-202607-01 (阶段依赖链断裂) | 4 (TP-B-005, C-020, D-005, X-001) | 6 | **PASS** |
| BUG-202607-02 (重试幂等缺陷) | 5 (TP-B-014, C-021, D-009, E-008, F-012) | 6 | **PASS** |
| BUG-202607-03 (跨模块数据不一致) | 3 (TP-C-002, C-003, X-002) | 4 | **PASS** |
| BUG-202607-04 (省份代码硬编码) | 2 (TP-B-004, X-005) | 2 | **PASS** |

全部4个已知历史缺陷均有充分的正向+反向防御覆盖。

---

## 审计结论与建议

### 整体评价

- 本次覆盖率审计发现 **3个覆盖缺口**，需求→测试点覆盖率 **93.75%**，略低于95%目标
- **亮点**: 第二次上报7类核验逐项覆盖（通过+异常各14个测试点）、申诉完整闭环验证、跨模块端到端链路、历史缺陷100%防御覆盖、ETC税额精度专项覆盖
- **改进项**: 3个缺口均为"完整性"类遗漏（列表字段/重试机制/详情弹窗），属于测试点设计时未逐条对照需求清单的系统性遗漏

### 建议行动

| 优先级 | 行动项 | 对应缺口 |
| :---: | :--- | :--- |
| **P0** | 新增 TP-B-020 "第一次上报列表字段完整性校验" 及对应用例（参考 TP-C-004 结构） | GAP-001 |
| **P0** | 新增 TP-C-023 "第二次上报自动重试—最多3次间隔递增" 及对应用例（参考 TP-B-007 结构） | GAP-002 |
| **P1** | 新增 TP-C-024 "第二次上报详情弹窗分组字段完整性" 及对应用例（重点: 资金流水10字段+车辆轨迹6字段） | GAP-003 |
| **P2** | 需求"异常代码一览表"仅有标题无内容，确认后补充 TP-F-011 的详细验证数据 | REQ-F-05 |
| **P2** | 确认自动重试间隔时间（当前假设5s/15s/30s），更新所有重试用例的测试数据 | — |

---

> **审计元数据**:
> - 审计依据: requirement.md (7模块/48需求条目), 测试点 (103个/7模块), 测试用例 (128个/7模块), 风险评估 (2项风险)
> - 追溯方法: 正向追溯 (需求→测试点) + 反向追溯 (用例→需求) + 风险覆盖交叉验证
> - 覆盖率计算: 需求→测试点 = 已覆盖需求条目 / 总需求条目; 过度覆盖 = 无需求依据的用例 / 总用例数
