探索性测试(Exploratory Testing)
一句话总结:边学习、边设计、边执行的自由式测试方法。
🌟 快速理解
脚本化测试 vs 探索性测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 脚本化测试(按剧本演戏): 1. 打开登录页面 2. 输入用户名 3. 输入密码 4. 点击登录 5. 验证结果 (严格按步骤执行)
探索性测试(即兴表演): - 试试能否用邮箱登录? - 试试能否用手机号登录? - 试试密码能否复制粘贴? - 试试能否记住密码? (自由探索,发现问题)
|
📌 核心概念
什么是探索性测试?
探索性测试:测试人员同时进行学习、测试设计和测试执行的测试方法。
探索性 vs 脚本化
| 维度 |
探索性测试 |
脚本化测试 |
| 测试用例 |
即时设计 |
预先设计 |
| 灵活性 |
高 |
低 |
| 创造性 |
高 |
低 |
| 适用场景 |
新功能、复杂场景 |
回归测试 |
| 测试者 |
经验丰富 |
任何人 |
🎯 真实案例
案例:发现隐藏Bug
背景:电商系统登录功能
脚本化测试:
1 2 3
| ✅ 正确的用户名和密码 → 登录成功 ✅ 错误的密码 → 提示"密码错误" ✅ 不存在的用户 → 提示"用户不存在"
|
探索性测试发现的问题:
1 2 3 4 5
| ❌ 连续输错5次密码后,账号被锁定,但没有提示 ❌ 密码区分大小写,但没有说明 ❌ 登录后按浏览器"后退",可以再次看到登录页面 ❌ 在登录页面停留30分钟后,Session过期,但没有提示 ❌ 使用特殊字符(如emoji)作为密码,系统崩溃
|
价值:探索性测试发现了5个脚本化测试遗漏的问题。
✅ 探索性测试技术
1. 基于场景的探索
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| def explore_forgot_password(): """探索忘记密码场景"""
|
2. 基于风险的探索
1 2 3 4 5 6 7 8 9
| def explore_payment(): """探索支付功能"""
|
3. 基于数据的探索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| def explore_input_validation(): """探索输入验证""" test_inputs = [ "", " ", "a" * 1000, "😀", "<script>alert()</script>", "' OR '1'='1", "../../etc/passwd", None, 123, [1, 2, 3], ] for input_data in test_inputs: response = test_function(input_data)
|
📋 探索性测试流程
Session-Based Test Management (SBTM)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1. 制定测试章程(Charter) - 目标:探索登录功能 - 时间:90分钟 - 范围:用户认证流程
2. 执行测试会话(Session) - 边探索边记录 - 发现问题立即记录 - 尝试不同场景
3. 总结报告(Debrief) - 测试了什么 - 发现了什么问题 - 学到了什么 - 下一步计划
|
🛠️ 探索性测试工具
| 工具 |
用途 |
推荐度 |
| Session Tester |
会话管理 |
⭐⭐⭐⭐ |
| Rapid Reporter |
快速记录 |
⭐⭐⭐⭐⭐ |
| Mind Map |
思维导图 |
⭐⭐⭐⭐ |
| Screen Recorder |
屏幕录制 |
⭐⭐⭐⭐⭐ |
📊 最佳实践
1. 制定测试章程
1 2 3 4 5 6 7
| 测试章程模板: ================ 目标:探索 [功能名称] 时间:[时长] 范围:[测试范围] 重点:[关注点] 风险:[潜在风险]
|
2. 记录测试过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 测试记录模板: ================ 时间:2024-01-15 14:00-15:30 测试者:张三 章程:探索登录功能
测试内容: 1. 尝试用邮箱登录 ✅ 2. 尝试用手机号登录 ✅ 3. 尝试连续输错密码 ❌ 发现Bug #123
发现问题: - Bug #123:连续输错5次密码后账号被锁定,但没有提示
学到的知识: - 系统支持邮箱和手机号登录 - 密码区分大小写 - 有账号锁定机制
下一步: - 探索密码重置流程 - 探索第三方登录
|
3. 结合自动化测试
1 2 3 4 5 6 7 8 9 10
| def test_account_lockout_notification(): """测试账号锁定提示(探索性测试发现的问题)""" for i in range(5): response = login("test@example.com", "wrong_password") response = login("test@example.com", "wrong_password") assert "账号已被锁定" in response["error"]
|
🔗 相关主题
- [[手工测试]] - 探索性测试的一种
- [[自动化测试]] - 与探索性测试互补
- [[回归测试]] - 探索性测试发现的问题需要回归测试
💡 快速参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| 探索性测试速查表 ================
定义:边学习、边设计、边执行的测试方法
核心特征: 🎯 即时设计测试用例 🔍 自由探索 💡 创造性思维 📝 边测试边记录
探索技术: 1. 基于场景的探索 2. 基于风险的探索 3. 基于数据的探索
SBTM流程: 1. 制定测试章程 2. 执行测试会话 3. 总结报告
推荐工具: - Rapid Reporter(记录) - Mind Map(思维导图) - Screen Recorder(录屏)
最佳实践: 1. 制定测试章程 2. 记录测试过程 3. 结合自动化测试 4. 定期总结
适用场景: ✅ 新功能测试 ✅ 复杂场景测试 ✅ 发现隐藏Bug ✅ 用户体验测试
探索 vs 脚本: - 探索:灵活、创造性 - 脚本:规范、可重复
|