mcpField
E
exploratory-testing

exploratory-testing

github.com/fishzjpTesting & quality5446 installsUpdated 1w ago
Repository

About exploratory-testing

An exploratory testing skill for unfamiliar systems and incomplete requirements. It uses a charter to guide investigation and records system understanding, risks, and test ideas rather than executing predefined cases.

Key features

  1. 01Set goals, scope, and stopping point with a charter
  2. 02Explore system flows and record evidence
  3. 03Compile risks and test ideas
  4. 04Hand notes off for later analysis or testing

Use cases

  1. 01Explore an unfamiliar system with sparse documentation
  2. 02Build system understanding from incomplete requirements
  3. 03Conduct autonomous testing in a black-box environment

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/fishzjp/qa-skills --skill exploratory-testing

After installing, type/exploratory-testingin Claude Code to confirm it loaded.

Details

From the project README

探索式测试(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(产出结构)

# 探索笔记:{主题}

## Charter(本轮探索的使命)
- 目标:{回答什么问题 / 覆盖什么区域}
- 范围:{系统/模块/流程}
- 时长/停点:{时间盒或停止条件}

## 系统理解(探索中修正)
- 入口与导航路径 / 角色与权限 / 核心流程 / 数据流向 / 状态与流转

## 风险清单(每条带证据标注,此时加载 `../core/evidence.md`)
- R?:{风险描述}|level: {Critical/High/Medium/Low,按 `../core/risk-model.md` 的 Impact × Likelihood 预评}|evidence: {E0–E4 + 来源}|confidence: {high/medium/low}|status: {fact / inference / risk / hypothesis}
  (R? 为会话内临时编号;移交 `test-strategy` 时并入其 Risk Map 统一重编为 R1…,探索笔记原文编号不保留)

## 测试想法(后续转化为正式用例的候选)
- 想法 → 建议归属:{test-case-writing 直接产出 / 需先澄清的问题}

## 发现的 Bug(现象 + 复现步骤 + 证据;未定性,标 Hypothesis)

## 未解之谜(需要用户/开发澄清的问题)

工作流

1. 制定 Charter(先定使命,再动手)
  • Charter 三要素:目标(回答什么问题,如"优惠券领取的前置约束有哪些")、范围(哪个系统/流程)、停点(时间盒或"风险清单满 10 条")
  • 主题未知时与用户对齐一句:"这轮探索想弄清楚什么?"
  • 无环境/账号 → 先索取(入口地址、每角色账号、数据说明),不开无凭据的探索
2. 系统摸底(建初始地图)
  • 登录 → 枚举入口与导航路径 → 记录角色可见的功能面
  • 走一遍可发现的主流程,记录:页面/接口、数据对象、状态与流转
  • 使用宿主可用的浏览器自动化能力(导航、截图、API 监听/抓包)采集证据,以本 skill 的笔记结构为产出——会话与产出归本 skill,不为此加载其他执行 skill 的指令;宿主/环境无浏览器自动化能力时降级为人工探索(测试工程师按手动步骤操作 + 人工截图/抄录响应),笔记结构与证据标注不变,仅证据采集效率下降
3. 探索循环(边设计边执行边记录)

按 charter 目标循环:假设 → 触发 → 观察 → 记录:

探索启发式问的问题
输入极值空值/超大/特殊字符/负数,系统怎么拦
状态穿越跳步操作(未达前置直接触发后续)、逆向操作、重复操作
并发与竞态两个会话同时操作同一对象
数据生命周期创建→修改→删除→再查,残留吗;级联对象怎么办
权限边界换角色/退出登录后重放同一操作(含直接调接口)
错误恢复失败后重试、断网重连、超时后的状态
平台与环境换浏览器/分辨率/弱网/系统配置开关,行为还一致吗
时间与时钟零点/跨天边界、过期与定时任务触发时机,状态与文案对吗
  • 每个观察记 evidence 等级(E3 运行证据优先——截图/响应原文);推测记 Inference/Hypothesis,不伪装成事实
  • 发现异常先定性再记录:"这是预期行为还是 Bug?"不确定 → 记入未解之谜问用户,不自判(提问格式与裁决落盘统一按 ../core/clarify-pattern.md,场景用「Bug 定性」)
4. 收敛与落盘
  • 时间盒到 / 停点条件满足 → 整理探索笔记落盘 探索笔记_{主题}.md
  • 知识沉淀判定:探索中确认的业务规则、环境怪癖、flaky 噪声判据若过 qa-memory 的写入判据(换新会话重测能省一次重新发现),按其流程沉淀进项目 .qa/ 知识库
  • 风险清单按 ../core/risk-model.md 预评级(Impact × Likelihood;证据不足时 status 记 risk/inference 并注明补强方向,不用 status 枚举外的标记)
  • 测试想法分类:可直接转用例的 / 需先澄清的 / 需专项环境的
5. 交付与移交
  • 旁路场景(qa 流水线 / 需求建模前):笔记路径交给 requirement-analysis 作为建模输入
  • 独立场景:向用户交付笔记 + 一句话结论(系统理解程度 / 最高风险 / 建议下一步)
  • Bug 移交:已确认 → bug-analysis;测试想法转正式用例 → test-case-writing

Common Mistakes

错误后果正确做法
无 charter 闲逛探索散漫、产出碎片化先定目标/范围/停点
把探索当踩点(只收集选择器)与 e2e 工作流零职责混淆产出是系统理解+风险清单,不是 Page Object
观察不记证据笔记不可复核,风险清单失效每条观察带 evidence 等级与来源
异常自判为 Bug误报(可能就是预期设计)未定性记 Hypothesis,问用户
探索发现全部当场写正式用例会话失焦、时间盒失控记测试想法,会话后统一转
笔记留在会话里不落盘下游无法消费、断点丢失落盘 探索笔记_{主题}.md

Comments

Markdown supported