跳转至

探索式测试教程(软件测试人员专用)

!!! abstract “教程简介” 探索式测试不是”随便点点”,而是在有限时间内围绕一个明确目标,边学习、边设计、边执行、边记录风险。它特别适合新功能、需求不清晰、业务复杂和高风险模块。


前置要求

项目 要求 获取方式
软件测试理论基础 了解测试流程、用例设计、缺陷管理 软件测试理论基础教程

新手导读

很多新手以为测试只有两种:照测试用例执行,或者写自动化脚本。实际项目里,还有一类非常重要的能力:当需求不完整、场景很多、时间有限时,测试人员要主动探索风险。

第一遍先记住:

脚本化测试:按提前写好的步骤执行。
探索式测试:带着目标去探索,过程中不断产生新测试点。

探索式测试不是替代测试用例,而是补充测试用例。它能帮助你发现“用例里没写到,但用户真的会遇到”的问题。


一、什么是探索式测试

探索式测试强调同时进行四件事:

动作 说明
学习 快速理解功能、业务规则和系统行为
设计 根据观察实时产生新的测试思路
执行 马上操作系统验证想法
记录 记录缺陷、疑问、风险和后续用例

例子:

测试购物车时,你发现商品价格会随促销活动变化。
于是你临时补测:
- 加购前后价格变化
- 勾选和取消勾选后总价变化
- 优惠券叠加后总价变化
- 多端同时修改数量后总价变化

这些场景可能不在原始测试用例里,但非常有价值。


二、探索式测试适合什么场景

场景 为什么适合
新功能第一次提测 需求和实现都还不稳定,需要快速摸清行为
需求描述不完整 需要通过系统行为反推规则并提出问题
业务规则复杂 组合场景多,固定用例容易漏
高风险模块 支付、订单、权限、上传、优惠等容易出严重问题
UI 交互复杂 用户操作路径多,需要观察体验问题
上线前补充测试 在固定用例之外寻找遗漏风险

不适合只靠探索式测试的场景:

  • 稳定回归测试。
  • 明确的合规检查。
  • 必须重复执行的核心流程。
  • 需要自动化长期监控的接口。

这类场景更适合测试用例和自动化。


三、探索式测试和脚本化测试的区别

对比点 脚本化测试 探索式测试
测试目标 验证已知场景 发现未知风险
执行方式 按步骤执行 根据观察实时调整
适合阶段 回归、验收、稳定功能 新功能、复杂功能、高风险功能
产出 用例执行结果、缺陷 缺陷、风险、疑问、新用例
优势 可重复、可度量 灵活、发现能力强
风险 容易机械执行 容易变成随便点,需要目标和记录

成熟团队通常两者结合:

脚本化测试保证已知风险不复发。
探索式测试发现新的风险和遗漏场景。

四、Charter:探索式测试任务卡

探索式测试最好不要空着脑袋开始。先写一个 Charter,也就是探索任务卡。

模板:

探索目标:
测试范围:
关注风险:
测试数据:
时间盒:
记录方式:
结束标准:

示例:购物车金额探索

探索目标:发现购物车金额计算和库存联动风险。
测试范围:加购、改数量、勾选、优惠券、删除、结算前金额。
关注风险:金额错误、库存超卖、优惠叠加错误、多端数据不同步。
测试数据:正常商品、库存为 1 商品、促销商品、可用优惠券。
时间盒:60 分钟。
记录方式:记录操作路径、异常现象、截图、接口响应。
结束标准:完成 5 类金额变化场景,输出缺陷或风险清单。

Charter 的作用是让探索式测试保持方向,不变成“随手点”。


五、Session-Based Testing:基于会话的探索

Session-Based Testing 是一种更可管理的探索式测试方式。每次探索都有固定时间盒和记录。

5.1 Session 基本结构

项目 示例
时长 45 到 90 分钟
主题 登录安全、订单状态、文件上传
负责人 测试人员 A
产出 缺陷、疑问、风险、新增用例
复盘 哪些有效,哪些需要继续测

5.2 Session 记录模板

Session 主题:
时间:
测试人员:
测试环境:

探索目标:
实际覆盖:
发现缺陷:
发现疑问:
发现风险:
新增测试点:
需要跟进:

5.3 执行节奏

5 分钟:确认目标和数据
30-60 分钟:集中探索
10 分钟:整理记录
10 分钟:复盘和补充用例

不要一边聊天一边探索。探索式测试需要注意力,最好一次只围绕一个主题。


六、探索式测试常用启发法

启发法不是固定答案,而是帮助你快速想测试点。

6.1 CRUD 启发

适合后台管理、数据维护功能。

操作 测试问题
Create 能否新增,必填字段如何校验
Read 能否查看,是否越权看到别人的数据
Update 能否修改,状态变化是否受限制
Delete 能否删除,删除后关联数据如何处理

6.2 数据启发

数据类型 测试问题
空值 空字符串、空数组、null
边界 最小值、最大值、刚好等于限制
特殊字符 空格、中文、符号、换行、Emoji
重复数据 重复提交、重复名称、重复订单
大数据 长文本、大文件、大列表

6.3 状态启发

适合订单、审批、支付、任务流。

待支付 -> 已支付
待支付 -> 已取消
已支付 -> 退款中
已取消 -> 不允许支付
退款中 -> 已退款

测试问题:

  • 状态能否非法跳转。
  • 重复操作是否幂等。
  • 页面状态和数据库状态是否一致。
  • 异常中断后状态是否可恢复。

6.4 权限启发

维度 测试问题
未登录 是否能访问页面或接口
普通用户 是否只能操作自己的数据
角色差异 不同角色按钮和接口权限是否一致
直接请求接口 前端隐藏按钮后接口是否仍能调用
token 替换 用户 A token 是否能访问用户 B 数据

6.5 时间启发

适合验证码、优惠券、订单超时、会员有效期。

  • 刚开始。
  • 即将过期。
  • 已过期。
  • 跨天。
  • 跨月。
  • 时区差异。
  • 系统时间被调整。

七、探索式测试记录怎么写

探索式测试最怕“测过但没证据”。记录要简洁但可追踪。

7.1 缺陷记录

标题:库存为 1 的商品可提交 2 件订单
路径:商品详情 -> 加购物车 -> 修改数量 -> 提交订单
测试数据:商品 ID 10001,库存 1
实际结果:订单创建成功,库存变为 -1
期望结果:提示库存不足,不创建订单
证据:截图、接口响应、库存 SQL
风险:可能导致超卖

7.2 疑问记录

问题:购物车价格应该按加入时价格,还是实时价格?
现象:加入购物车后,后台修改商品价格,购物车总价随之变化。
影响:会影响用户支付金额和投诉风险。
需要确认:产品确认价格规则。

7.3 新增用例记录

新增用例:商品加入购物车后价格变化
前置条件:商品已加入购物车
步骤:后台修改商品价格,用户刷新购物车
预期:按产品确认规则展示价格,并给出明确提示

八、实战案例:登录功能探索

Charter

探索目标:发现登录功能在安全、会话和异常输入上的风险。
范围:手机号密码登录、失败次数、锁定、退出登录、token。
时间盒:45 分钟。
测试数据:正常账号、禁用账号、未注册手机号。

探索路径

  1. 正常账号登录成功。
  2. 密码错误 1 次、4 次、5 次。
  3. 锁定后输入正确密码。
  4. 未注册手机号登录。
  5. 禁用账号登录。
  6. 登录后复制 token,请求用户信息接口。
  7. 退出登录后继续使用旧 token。
  8. 修改 token 后请求接口。

可能发现的问题

问题 风险
输错 5 次未锁定 暴力破解风险
账号不存在提示过于明确 枚举账号风险
退出登录后旧 token 仍可用 会话失效风险
token 过期后接口返回用户数据 鉴权漏洞

九、实战案例:文件上传探索

Charter

探索目标:发现头像上传的类型、大小、权限和安全风险。
范围:JPG、PNG、超大文件、非法类型、后缀伪装、未登录上传。
时间盒:60 分钟。

探索路径

  1. 上传正常 JPG 和 PNG。
  2. 上传 0 KB 文件。
  3. 上传刚好 5 MB 文件。
  4. 上传超过 5 MB 文件。
  5. 上传中文文件名。
  6. 上传超长文件名。
  7. 将脚本文件改名为 .jpg 上传。
  8. 未登录直接调用上传接口。
  9. 用户 A 尝试替换用户 B 头像。

重点观察

  • 前端限制是否能被接口绕过。
  • 后端是否校验真实文件类型。
  • 上传失败是否泄露服务器路径。
  • 文件 URL 是否可被猜测。
  • 旧头像是否被清理或保留。

十、探索式测试输出物

一次合格的探索式测试至少应该输出:

输出物 内容
Session 记录 测试目标、范围、时间、覆盖情况
缺陷清单 可复现的问题和证据
疑问清单 需要产品或开发确认的问题
风险清单 可能影响上线的问题
新增用例 从探索中沉淀出的回归用例

示例总结:

本次围绕购物车金额进行了 60 分钟探索,覆盖加购、改数量、勾选、优惠券和结算前金额。发现 1 个缺陷:库存为 1 时可提交 2 件订单;发现 2 个需求疑问:价格是否按实时价、优惠券是否可与满减叠加。建议修复库存问题后,将价格变化和优惠叠加补充为回归用例。

十一、新手常见错误

错误 问题 改法
随便点页面 没有目标,难以复盘 先写 Charter
只记录 Bug 漏掉需求疑问和风险 同时记录缺陷、疑问、风险
不保留证据 开发难以复现 截图、接口、日志、SQL 都保留
测太大范围 时间被摊薄 每个 Session 只聚焦一个主题
不沉淀用例 下次还会漏 把有效探索点转成回归用例

十二、练习任务

请选择一个功能完成 45 分钟探索:

登录
购物车
下单支付
权限控制
文件上传

要求输出:

  1. 一张 Charter。
  2. 至少 10 条探索路径。
  3. 至少 2 个疑问或风险。
  4. 至少 1 个缺陷示例。
  5. 至少 3 条新增回归用例。

完成标准:

  • 不是随便点,而是围绕明确目标探索。
  • 记录中能看出测试数据和操作路径。
  • 每个风险都能说明影响。
  • 有价值的探索点被沉淀成后续用例。

探索式测试的价值在于训练测试人员的判断力。工具能帮你执行,但发现未知风险,仍然需要人的观察、怀疑和推理。

推荐下一步

根据你的学习进度,选择下一步:

  1. 如果你想继续学测试方法:学习 敏捷测试教程,掌握敏捷环境下的测试策略
  2. 如果你想检验理论基础:做 软件测试理论基础测验,检验学习效果
  3. 如果你想进入工具阶段:学习 数据库 SQL 教程,掌握数据校验

通关检查

完成本阶段后,使用 第1阶段-测试入门通关 检查是否可以进入下一阶段。