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.

109 lines (78 loc) 6.46 kB
--- name: exploratory-testing slug: exploratory-testing displayName: 探索式测试 version: 0.6.0 description: 需求不完整、系统陌生、文档不足时,发起以理解系统/发现风险为目的的独立探索式测试会话时使用——charter 驱动(目标 → 探索 → 记录),产出探索笔记(系统理解/风险清单/测试想法)作为需求建模输入或独立交付。不用于:为写自动化踩点的小规模探索(automated-e2e-testing 工作流零)、按既有用例执行(执行类 skill)。 --- # 探索式测试(exploratory-testing) 需求不完整、系统陌生、文档不足时的**独立**探索式测试会话:charter 驱动,边探索边设计,产出系统理解与风险清单,而不是执行既有用例。 - **输入**:被测系统入口(环境 + 账号)、探索主题或 charter、(可选)已有需求材料 - **输出(落盘)**`{项目}/探索笔记_{主题}.md`(charter、系统理解、风险清单、测试想法、发现的 Bug)——旁路场景下作为 `requirement-analysis` 的输入 - **适用**:新系统、老系统、文档缺失、黑盒测试、Agent 自主测试 ## When to Use - 新接手/陌生的系统,文档缺失或不可信,先探索再建模 - 需求不完整,需要用探索补齐系统理解与风险清单 - 黑盒环境(只有入口和账号)下的自主测试 ## When NOT to Use - 为写自动化**踩点**(理解页面结构、提取选择器、落 Page Object)→ `automated-e2e-testing` 工作流零(业务熟悉) - 按既有用例执行 → `automated-e2e-testing`(UI)/ `api-testing`(接口) - 已确认 Bug 的根因分析 → `bug-analysis` - 端到端流水线 → `qa`(本 skill 是其旁路阶段 0) ## 探索笔记 Schema(产出结构) ```markdown # 探索笔记:{主题} ## Charter(本轮探索的使命) - 目标:{回答什么问题 / 覆盖什么区域} - 范围:{系统/模块/流程} - 时长/停点:{时间盒或停止条件} ## 系统理解(探索中修正) - 入口与导航路径 / 角色与权限 / 核心流程 / 数据流向 / 状态与流转 ## 风险清单(每条带证据标注,此时加载 `../core/evidence.md`) - R?:{风险描述}|evidence: {E0–E4 + 来源}|confidence: {high/medium/low} (R? 为会话内临时编号;移交 `test-strategy` 时并入其 Risk Map 统一重编为 R1…,探索笔记原文编号不保留) ## 测试想法(后续转化为正式用例的候选) - 想法 → 建议归属:{test-case-writing 直接产出 / 需先澄清的问题} ## 发现的 Bug(现象 + 复现步骤 + 证据;未定性,标 Hypothesis) ## 未解之谜(需要用户/开发澄清的问题) ``` ## 工作流 ### 1. 制定 Charter(先定使命,再动手) - Charter 三要素:**目标**(回答什么问题,如"优惠券领取的前置约束有哪些")、**范围**(哪个系统/流程)、**停点**(时间盒或"风险清单满 10 条") - 主题未知时与用户对齐一句:"这轮探索想弄清楚什么?" - 无环境/账号 → 先索取(入口地址、每角色账号、数据说明),**不开无凭据的探索** ### 2. 系统摸底(建初始地图) - 登录 → 枚举入口与导航路径 → 记录角色可见的功能面 - 走一遍可发现的主流程,记录:页面/接口、数据对象、状态与流转 - 使用 `automated-e2e-testing` 的工具能力(浏览器自动化、截图、API 监听)采集证据时,以本 skill 的笔记结构为产出——工具归 e2e,**会话与产出归本 skill**;宿主/环境无浏览器自动化能力时降级为**人工探索**(测试工程师按手动步骤操作 + 人工截图/抄录响应),笔记结构与证据标注不变,仅证据采集效率下降 ### 3. 探索循环(边设计边执行边记录) 按 charter 目标循环:**假设 → 触发 → 观察 → 记录**: | 探索启发式 | 问的问题 | |-----------|---------| | 输入极值 | 空值/超大/特殊字符/负数,系统怎么拦 | | 状态穿越 | 跳步操作(未达前置直接触发后续)、逆向操作、重复操作 | | 并发与竞态 | 两个会话同时操作同一对象 | | 数据生命周期 | 创建→修改→删除→再查,残留吗;级联对象怎么办 | | 权限边界 | 换角色/退出登录后重放同一操作(含直接调接口) | | 错误恢复 | 失败后重试、断网重连、超时后的状态 | | 平台与环境 | 换浏览器/分辨率/弱网/系统配置开关,行为还一致吗 | | 时间与时钟 | 零点/跨天边界、过期与定时任务触发时机,状态与文案对吗 | - 每个观察记 evidence 等级(E3 运行证据优先——截图/响应原文);推测记 Inference/Hypothesis,不伪装成事实 - **发现异常先定性再记录**:"这是预期行为还是 Bug?"不确定 → 记入未解之谜问用户,不自判(提问格式与裁决落盘统一按 `../core/clarify-pattern.md`,场景用「Bug 定性」) ### 4. 收敛与落盘 - 时间盒到 / 停点条件满足 → 整理探索笔记落盘 `探索笔记_{主题}.md` - 风险清单按 `../core/risk-model.md` 预评级(Impact × Likelihood,可标"待证据补强") - 测试想法分类:可直接转用例的 / 需先澄清的 / 需专项环境的 ### 5. 交付与移交 - 旁路场景(qa 流水线 / 需求建模前):笔记路径交给 `requirement-analysis` 作为建模输入 - 独立场景:向用户交付笔记 + 一句话结论(系统理解程度 / 最高风险 / 建议下一步) - Bug 移交:已确认 → `bug-analysis`;测试想法转正式用例 → `test-case-writing` ## Common Mistakes | 错误 | 后果 | 正确做法 | |------|------|---------| | 无 charter 闲逛 | 探索散漫、产出碎片化 | 先定目标/范围/停点 | | 把探索当踩点(只收集选择器) | 与 e2e 工作流零职责混淆 | 产出是系统理解+风险清单,不是 Page Object | | 观察不记证据 | 笔记不可复核,风险清单失效 | 每条观察带 evidence 等级与来源 | | 异常自判为 Bug | 误报(可能就是预期设计) | 未定性记 Hypothesis,问用户 | | 探索发现全部当场写正式用例 | 会话失焦、时间盒失控 | 记测试想法,会话后统一转 | | 笔记留在会话里不落盘 | 下游无法消费、断点丢失 | 落盘 `探索笔记_{主题}.md` |