Files
QaAutomationHub/output/analysis/安徽运八需求_覆盖率审计.md
T

296 lines
18 KiB
Markdown
Raw 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.
# 安徽运八需求 覆盖率审计
> 审计日期: 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-002ETC 有 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项风险)
> - 追溯方法: 正向追溯 (需求→测试点) + 反向追溯 (用例→需求) + 风险覆盖交叉验证
> - 覆盖率计算: 需求→测试点 = 已覆盖需求条目 / 总需求条目; 过度覆盖 = 无需求依据的用例 / 总用例数