当脚本化测试覆盖得差不多了、但直觉告诉你"可能还有东西没测到"时使用此技能。用系统化的探索方法(场景漫游、角色扮演、失败路径、标杆对比)来发现预设测试用例覆盖不到的问题。探索式测试不是随便点——它是有明确 charter(任务书)和时长的有目的探索。每次探索需要记录 session 笔记和发现的问题列表。
---
name: qa-exploratory-testing
version: 1.6.0
description: >-
当脚本化测试覆盖得差不多了、但直觉告诉你"可能还有东西没测到"时使用此技能。用系统化的探索方法(场景漫游、角色扮演、失败路径、标杆对比)来发现预设测试用例覆盖不到的问题。探索式测试不是随便点——它是有明确 charter(任务书)和时长的有目的探索。每次探索需要记录 session 笔记和发现的问题列表。
when_to_use: 用户说"探索测试"、"自由测试"、"漫游测试"、"场景发现"、"到处点一点"、"随机测试"、"角色扮演"、"SBTM"、需要发现脚本化测试遗漏的问题、新产品快速验证时
allowed-tools: Read Grep Glob Bash
related_skills:
upstream:
- qa-scenario-tree # 输入:场景树识别测试区域
- qa-risk-intuition # 输入:风险评估识别高风险区域
downstream:
- qa-bug-reporting # 输出:发现的问题用于Bug报告
- qa-retrospective # 输出:测试发现用于复盘
input_format:
required:
- name: 测试目标
type: string
description: 探索式测试的目标和范围
- name: 探索领域
type: string
description: 待探索的功能领域和特性
optional:
- name: 启发式清单
type: array
description: 来自qa-heuristic-checklist的启发式检查项
- name: 时间盒
type: string
description: 探索时间限制
output_format:
traceability:
- 每个探索session带唯一ID(EXP-XXXX)
structure:
- exploration_charter: 探索章程
- session_notes: 探索笔记
- findings: 发现清单
- bug_reports: 发现缺陷报告
- coverage_notes: 覆盖记录
error_recovery_guidance:
on_failure: "记录探索路径,切换测试策略或结束当前Session"
retry_behavior: "开启新Session,尝试不同的探索方向"
categories: ['Development','Testing']
depth_requirement_quantification:
reference_value: "根据探索目标调整session深度:简单×1/中等×2/复杂×3"
minimum: "至少完成1个charter的session笔记和发现清单"
---
> **⚠️ 安全警告**:本技能的示例可能涉及订单号、支付金额、截图、身份证、手机号等敏感数据。
> 实际使用时请勿粘贴真实生产数据、客户信息或财务凭证;测试前应脱敏/掩码处理。
> 本技能仅在 workspace/ 输出评估文件,不持久化、不外传、不跨会话复用。
# 探索式测试
## 核心原则
探索式测试不是随意测试,而是有章程、有记录、有学习的系统化探索。
本技能基于SBTM框架(Session-Based Test Management)进行结构化探索。
## 深度要求(参考值)
**关键指标**:根据功能复杂度调整探索深度
| 复杂度 | Session要求 | Bug发现目标 | 说明 |
|--------|------------|------------|------|
| 简单功能 | 1-2个Session | 3-5个发现 | 单一功能/页面 |
| 中等功能 | 3-5个Session | 8-15个发现 | 多页面/流程功能 |
| 复杂功能 | 5-8个Session | 15-30个发现 | 跨模块/核心业务流 |
## Session-Based Test Management(SBTM)
### Charter(测试章程)
```text
Charter结构:
├─ 探索(Explore)
├─ 学习(Learn)
├─ 关于(About)
├─ 使用(Using)
├─ 发现(Discover)
└─ 信息(Information)
示例:
"探索用户登录功能,学习它如何处理异常输入,
使用边界值和特殊字符,发现潜在的安全漏洞和用户体验问题。"
```
### Session类型
```text
├─ 探索Session:发现新问题
│ ├─ 时长:60-120分钟
│ ├─ 目标:发现新Bug、新风险
│ └─ 记录:发现、问题、疑问
│
├─ 评审Session:验证修复
│ ├─ 时长:30-60分钟
│ ├─ 目标:验证Bug修复、回归测试
│ └─ 记录:验证结果、遗留问题
│
└─ 调研Session:技术调研
├─ 时长:60-120分钟
├─ 目标:了解系统、评估可测试性
└─ 记录:系统架构、技术细节
```
## 漫游测试方法
### 1. 卖点漫游(Feature Tour)
```text
方法:
├─ 从用户视角体验所有功能
├─ 记录每个功能的使用感受
├─ 发现功能设计问题
└─ 评估用户体验
关注点:
├─ 功能是否易用?
├─ 功能是否符合预期?
├─ 功能间是否一致?
└─ 有无设计缺陷?
```
### 2. 地标漫游(Landmark Tour)
```text
方法:
├─ 识别系统的关键入口/出口
├─ 从每个入口深入探索
├─ 发现入口/出口相关问题
└─ 验证系统导航
关注点:
├─ 入口是否清晰?
├─ 导航是否合理?
├─ 返回/退出是否正常?
└─ 状态是否正确保存?
```
### 3. 旅伴漫游(Bad Neighborhood)
```text
方法:
├─ 识别系统的问题高发区
├─ 重点探索这些问题区域
├─ 发现历史问题的根源
└─ 验证改进效果
关注点:
├─ 历史Bug集中的模块
├─ 复杂度高的代码
├─ 频繁变更的功能
└─ 用户投诉多的区域
```
### 4. 基于风险的漫游(Risk Tour)
```text
方法:
├─ 识别高风险区域
├─ 设计针对性探索策略
├─ 深入测试高风险场景
└─ 验证风险控制措施
关注点:
├─ 资金相关功能
├─ 安全相关功能
├─ 核心业务流程
└─ 第三方集成
```
## 角色扮演测试
### 用户角色
```text
角色类型:
├─ 新手用户:第一次使用
│ ├─ 关注:学习成本、引导设计
│ └─ 探索:误操作、困惑点
│
├─ 普通用户:日常使用
│ ├─ 关注:效率、稳定性
│ └─ 探索:常用路径、痛点
│
├─ 专家用户:高频使用
│ ├─ 关注:效率、高级功能
│ └─ 探索:快捷键、批量操作
│
└─ 恶意用户:异常使用
├─ 关注:安全、稳定性
└─ 探索:注入、越权、破坏
```
### 角色卡片模板
```markdown
## 角色卡片
### 基本信息
- 角色名称:[名称]
- 使用频率:[每天/每周/偶尔]
- 技术水平:[新手/普通/专家]
- 核心诉求:[最关心什么]
### 使用场景
- 典型操作:[日常操作]
- 使用时间:[工作时间/随时随地]
- 使用设备:[PC/手机/平板]
### 痛点预期
- 常见问题:[可能遇到的问题]
- 不满点:[可能不满意的地方]
- 误操作:[可能的误操作]
```
## 探索记录模板
```markdown
## 探索式测试Session记录
### 基本信息
- Charter:[测试章程]
- 测试人员:[姓名]
- 开始时间:[时间]
- 持续时长:[时长]
- 测试环境:[环境信息]
### 探索笔记
| 时间 | 操作 | 观察 | 发现 |
|------|------|------|------|
| 10:00 | 打开登录页面 | 页面正常 | 无 |
| 10:05 | 输入特殊字符 | 提示格式错误 | 正常 |
| 10:10 | 并发点击登录 | 重复提交 | 潜在Bug |
### 发现汇总
- Bug:[数量]
- 风险:[数量]
- 疑问:[数量]
- 建议:[数量]
### 问题详情
| ID | 类型 | 描述 | 严重程度 |
|----|------|------|---------|
| EXP-001 | Bug | 并发点击导致重复订单 | 高 |
| EXP-002 | 风险 | 无登录超时机制 | 中 |
### 遗留事项
- [ ] 待验证:[事项]
- [ ] 待深入:[事项]
- [ ] 待确认:[事项]
```
## 输出示例
**探索"商品搜索"功能**
→ 创建Charter:"探索商品搜索的边界和异常行为(30分钟)"
→ 漫游方法:卖点漫游(正常搜索)→地标漫游(空结果/特殊字符)→风险漫游(SQL注入)
→ 发现:搜索"%"导致数据库报错(SQL注入风险)
→ 记录Session笔记,将发现转化为脚本化测试用例
**探索"用户注册"流程**
→ 角色扮演:普通用户(正常注册)→恶意用户(批量注册)→忘记密码用户
## 异常处理引导
| 场景 | 表现 | 处理方式 |
|------|------|---------|
| Charter目标过大 | 30分钟无法完成Charter | 拆分为多个子Charter,每个聚焦一个维度 |
| 探索方向迷失 | 测试过程中偏离初始目标 | 暂停回顾Charter,必要时重新明确目标 |
| 发现过多但时间不够 | 大量发现来不及深入验证 | 按风险优先排序,高风险当场深挖,低风险记录待办 |
| 无法复现探索发现 | 探索时遇到的问题无法稳定复现 | 记录环境和操作序列,截图+日志辅助,降级为风险项 |
## 检查清单
探索式测试完成后检查:
- [ ] Charter是否清晰定义?
- [ ] 探索笔记是否完整记录?
- [ ] 发现是否分类整理?
- [ ] Bug报告是否规范?
- [ ] 遗留事项是否跟踪?
- [ ] 经验是否沉淀?
don't have the plugin yet? install it then click "run inline in claude" again.