dsh-qa-skills
Version:
DeepSeek Harness (dsh) plugin: 10 testing skills (requirement analysis, test strategy, case writing/review, E2E/API automation, exploratory, regression, bug analysis) + shared core knowledge base — a full QA pipeline as agent skills.
202 lines (129 loc) • 11.7 kB
Markdown
# 覆盖度检查表(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. 数据迁移/升级 | 扩展 | | | |