UNPKG

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
# 覆盖度检查表(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. 数据迁移/升级 | 扩展 | | | |