# 覆盖度检查表（coverage）

> 编写完测试用例后，逐维度检查。分为**核心维度**（所有项目必检）和**扩展维度**（按项目类型选取）。
> 对每个维度问一个核心问题——**"这个维度上是否有遗漏？"**，而非"这个维度是否覆盖了？"
>
> 本文件同时承载**代码审查发现模式清单**（第 7.1 节），供阶段一代码探索与阶段四覆盖审查共用。`test-strategy` 制定范围、`test-case-review` 独立审查时同样引用本清单。
> 类型性维度（11 / 13–16 / 18 / 19）的**纳排与深度决策已上收**至 `test-type-matrix.md`（test-strategy 产出 type_scope）——本文件的类型性维度仅作用例设计提示，不是范围决策来源。

---

## 核心维度（7 个）

> 1-6 所有项目必检；**7 代码审查发现**为代码模式必检（无代码仓库则跳过该维度）。

### 1. 功能主流程
每个功能点的正向路径是否走通？每个功能选项是否有对应用例？

**典型遗漏**：只测了"创建成功"，没测"创建后数据是否正确持久化"。

### 2. 输入校验
必填缺失、格式非法、边界值（空/最大/最小/零值）、多值分隔符，是否都有对应的拦截用例？**每条校验规则是否在所有写入路径（创建/编辑/重新提交/导入）上都验证过，而不是只挂在创建？**（方法见 `methods/boundary.md`）

**典型遗漏**：创建时验了"门槛须大于面额"，驳回后编辑重提时没验——编辑路径绕过校验是真实系统的高发 bug。

### 3. 逆向操作与生命周期
创建→删除、分配→释放、导入→撤销、修改→恢复，每对操作是否都有验证？删除/释放后关联数据是否级联清理？**每种失败/拦截场景之后，重试恢复是否有用例（失败 → 再试 → 成功）？**

**典型遗漏**：只测了"领取成功"，没测"领取后释放任务，记录是否恢复"；测了"风控拦截提示"，没测"拦截过的用户之后正常领取是否放行"。

### 4. 状态流转
完整状态机的每一条边（A→B）是否覆盖？非法转换是否拒绝？并发状态变更是否有竞态条件？（方法见 `methods/state-machine.md`）

**典型遗漏**：只测了"待领取→标注中→已提交"，没有覆盖完整状态机。

### 5. 数据一致性
级联操作后关联数据是否一致？重复操作是否幂等？数据清理/归档后是否有残留？**名称/编号等标识字段重复提交时的唯一性行为是否验证？**

**典型遗漏**：只测了正常写入，没有测试重复导入时的幂等行为；没测"创建两个同名活动"系统是允许还是拦截。

### 6. 文档隐含需求
FAQ 每个问答是否转化了至少 1 条用例？"非目标"声明的限制是否有验证用例？注释、脚注中的约束条件是否被遗漏？

**典型遗漏**：FAQ 明确"复审队列就是普通队列"，但没有设计用例验证。

### 7. 代码审查发现（代码模式必检；无代码则跳过）
全面代码审查发现的每个潜在 bug 是否都有验证用例？高风险点 D1-Dn 是否每条都有回归用例？死代码是否确认可忽略（不写用例）？文档偏离是否已确认（记入附录）？证伪项是否已核实（避免伪用例）？**每个发现的验证用例本身是否用业务语言编写、代码证据（`文件:行`）是否隔离到了附录（不污染正文）？**

**典型遗漏**：只测功能，未验证代码中的 null 未兜底 / 边界未防护（NaN/负数/空数组）/ 状态死锁等潜在 bug；或把已证伪的风险点（无下游消费）当成真 bug 写了用例；或把 `文件:行`/SDK 符号直接写进用例正文，导致测试工程师看不懂。

#### 7.1 代码审查发现模式清单（阶段一代码探索逐项查找）

每条发现附 `文件:行` 证据并标注确信度，evidence 格式见 `evidence.md`：

| # | 模式 | 查找要点 |
|---|------|---------|
| 1 | null/undefined 未兜底 | `.map`/`.length`/`.width` 直接作用于可能为空的值 |
| 2 | 可选链断裂 | 链式取值中间层可能为空，后半段未防护 |
| 3 | 边界未防护 | NaN / 负数 / 空数组 / 超大值 / 0 直接进入计算 |
| 4 | 状态死锁 | 改了状态却被门控条件拦截，流转不出去 |
| 5 | 副作用泄漏 | 全局 state / 缓存修改后未 cleanup |
| 6 | 并发竞态 | 检查-后-使用（TOCTOU）、并发写覆盖 |
| 7 | 硬编码 | project_id / 环境 / 魔法数固定写死 |
| 8 | 权限遗漏 | 只在入口鉴权，内部路径/接口未二次校验 |
| 9 | 异步未 await | Promise 未等待、错误未捕获 |
| 10 | 错误静默吞掉 | 空 catch / 只打日志不反馈用户 |
| 11 | 文档 vs 实现不一致 | 字段名/类型、流程顺序、字段是否真提交、默认值 |
| 12 | 死代码/死声明 | 未挂载路由的模块、声明未解构的 props、未调用的 API |
| 13 | 证伪项 | 看似高风险实则无下游消费的字段/状态（核实后降级，避免伪用例） |

### 横切必检：可读性与可执行性（所有项目，定稿前必做）

以**零上下文新人**（没读过需求文档、没人讲解）为标准，逐项执行 `executability.md` 的定稿自检清单：文件头部有无导读四件套？每条用例**看得懂**（正文零代码内部、内部系统名与英文字段名可在术语表查到）？能否**开工执行**（页面入口写明、前置状态有制造方法、异步预期有判定时限、Mock 依赖写明找谁）？独立执行（有 UI）或协作执行（无 UI，标注请开发执行/反馈）？嵌入的是具体数据还是占位符？

**典型遗漏**：用例堆满 `文件:行`/SDK 符号/错误码常量；"风神""coupon_batch_no"裸用不解释；几十条用例第一步"打开活动页"但入口全文未说明；"自动变为已结束"没写等多久算失败；环境地址与测试账号只字未提，新人第一步登录就卡住。

---

## 扩展维度（按项目类型选取）

### 8. 技术实现细节（有设计文档的项目）
数据库约束是否生效？缓存加载时机和一致性？异步任务状态追踪和失败恢复？消息格式和向后兼容？

**典型遗漏**：设计方案提到"一次性加载缓存"，但没有测试导入过程中缓存数据变化的场景。

### 9. 权限与角色（多角色系统）
普通用户、管理员、无权限用户的操作是否验证？角色变更后权限是否即时生效？（方法见 `methods/permission.md`）

**典型遗漏**：FAQ 明确"管理员可浏览全部"，但没有设计管理员在绑定模式下的测试用例。

### 10. 错误处理与反馈（所有项目推荐）
错误信息是否清晰且包含定位信息？部分失败时成功部分是否保留？错误恢复后系统状态是否一致？

**典型遗漏**：只测了"报错"，没有验证错误信息的具体格式和可操作性。

### 11. 并发与性能（有性能要求的项目）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 1 性能效率 / 轴 4 并发一致性）。

多用户并发操作同一资源？批量操作性能基线？查询延迟上限？高并发下无重复无遗漏无死锁？

**典型遗漏**：设计方案明确给出"P99 < 50ms"的性能指标，但没有转化为具体的性能测试用例。

### 12. 链式/复杂流程（有多阶段操作的项目）
多阶段端到端验证？跨阶段数据传递完整性？多轮操作（>2 轮）累积正确性？中断后恢复/重试？

**典型遗漏**：只测到第 2 轮复审，没有验证第 3 轮、第 4 轮时历史数据是否正确累积。

### 13. 安全性（Web/API 项目必选）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 2 业务安全；越权功能正确性归功能域 permission）。

未认证/越权访问拦截？注入攻击防护？多租户数据隔离？敏感数据保护？接口限流？

**典型遗漏**：只测了功能正确性，没有测试用户 A 能否访问用户 B 的数据。

### 14. 兼容性（有前端的项目必选）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 5 兼容性）。

目标浏览器兼容？移动端适配？不同屏幕尺寸/分辨率？

**典型遗漏**：Chrome 上正常，Safari 上日期选择器无法弹出。

### 15. 国际化（多语言/海外项目）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 8 国际化）。

语言切换、时区处理、货币格式、RTL 布局、文案溢出/截断？

**典型遗漏**：时间戳在 UTC+8 正确，在 UTC-5 显示错误。

### 16. 网络与连接（移动端/实时系统）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 3 可靠性）。

弱网环境、断网重连、请求超时、离线模式？

**典型遗漏**：正常网络下提交成功，弱网下用户点击两次导致重复提交。

### 17. 通知/消息（有通知功能的项目）
消息发送正确性、失败重试、去重、模板变量渲染？

**典型遗漏**：只测了"消息发出"，没有测试消息内容中变量替换是否正确。

### 18. 第三方集成（调用外部服务）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 10 契约与集成）。

正常/超时/失败/降级？回调/Webhook 处理？异常数据容错？

**典型遗漏**：只测了第三方 API 正常返回，没有测试超时后的重试和降级。

### 19. 数据迁移/升级（存量系统迭代）

> 类型纳排与深度决策以 `test-type-matrix.md` 为准（轴 9 迁移与升级）。

Schema 变更后老数据兼容？迁移完整性？新旧版本共存？回滚后数据可用？

**典型遗漏**：新版本上线后，历史数据的展示格式异常。

---

## 维度选取速查

| 项目类型 | 核心维度 | 额外必选维度 |
|---------|---------|------------|
| Web 应用（前后端） | 1-7 | 8, 9, 10, 13, 14 |
| 纯 API 服务 | 1-7 | 8, 10, 11, 13 |
| 移动端应用 | 1-7 | 10, 14, 16 |
| 多端项目 | 1-7 | 按端分别选取 + 跨端一致性检查 |

> 编号说明：1-7 为核心维度，其中 **7 代码审查发现**为代码模式必检（无代码仓库跳过）。所有项目类型在有代码仓库时均必选维度 7。

---

## 自查结果模板

> 此表供人工评审或团队复盘时填写。AI 执行按 test-case-writing 阶段四的**抽查口径**执行（逐维度全检已废除），抽查结果并入用例文件末尾的「审查记录」，**不单独产出此表**（SKILL.md 规定不产出中间文件）；本清单作为抽查选点与按需加深的维度索引。

| 维度 | 适用 | 覆盖状态 | 缺失场景 | 补充用例编号 |
|------|------|---------|---------|-------------|
| 1. 功能主流程 | 核心 | | | |
| 2. 输入校验 | 核心 | | | |
| 3. 逆向操作与生命周期 | 核心 | | | |
| 4. 状态流转 | 核心 | | | |
| 5. 数据一致性 | 核心 | | | |
| 6. 文档隐含需求 | 核心 | | | |
| 7. 代码审查发现 | 核心（代码模式） | | | |
| 横切：可读性与可执行性 | 核心（所有项目） | | | |
| 8. 技术实现细节 | 扩展 | | | |
| 9. 权限与角色 | 扩展 | | | |
| 10. 错误处理与反馈 | 扩展 | | | |
| 11. 并发与性能 | 扩展 | | | |
| 12. 链式/复杂流程 | 扩展 | | | |
| 13. 安全性 | 扩展 | | | |
| 14. 兼容性 | 扩展 | | | |
| 15. 国际化 | 扩展 | | | |
| 16. 网络与连接 | 扩展 | | | |
| 17. 通知/消息 | 扩展 | | | |
| 18. 第三方集成 | 扩展 | | | |
| 19. 数据迁移/升级 | 扩展 | | | |
