探索性测试
基础入门
理解探索性测试的核心概念和价值
探索性测试是一种强调测试人员自主性和创造力的测试方法。与传统脚本测试不同,探索性测试不预先编写详细的测试用例,而是让测试人员在测试过程中边学习产品、边设计测试、边执行验证。这种方法的核心是「学习-设计-执行」三位一体,测试人员通过不断深入理解产品,动态调整测试策略和方向。
探索性测试的本质是充分利用测试人员的主观能动性。测试人员不仅是执行者,更是设计者和探索者。在探索过程中,测试人员会根据产品表现、发现的线索、突发的灵感,随时调整测试思路,深入挖掘潜在问题。这种灵活性是探索性测试的最大优势,也是它能发现预设测试遗漏问题的关键原因。探索性测试特别适合以下场景:快速迭代的敏捷项目中,需求变化频繁,预设用例来不及更新。测试时间紧张时,无法编写完整用例,需要快速发现关键问题。新功能上线时,需求文档不够完整,需要通过探索理解功能边界。用户体验测试时,需要从用户角度发现体验问题,而非验证功能正确性。探索性测试的价值在于它能补充预设测试的盲区,发现那些「文档里没有、用例里遗漏、但实际会发生」的问题。
与脚本测试的区别
- 脚本测试预先设计用例,探索性测试边探索边设计边执行。
- 脚本测试关注验证已知功能,探索性测试关注发现未知问题。
- 脚本测试用例可复用回归,探索性测试每次探索都是新的发现过程。
- 脚本测试适合稳定功能回归,探索性测试适合新功能和快速迭代。
- 脚本测试可自动化执行,探索性测试依赖人的判断和创造力。
前置知识
- 测试基础理论:理解测试目的、测试类型、测试方法的基本概念。
- 业务理解能力:能够快速理解产品功能和业务流程。
- 测试经验积累:有足够的测试经验支撑直觉判断。
- 系统化思维:能够有方法、有目标地组织探索过程。
- 沟通表达能力:能够清晰记录和描述发现的问题。
学习路径
从入门到实践的系统性学习指南
- 第一阶段:理解概念。学习探索性测试的定义、特点和适用场景,理解它与脚本测试的本质区别。推荐阅读 James Bach 的探索性测试文章和 Cem Kaner 的测试方法分类。
- 第二阶段:学习方法。学习常用的探索方法,包括角色探索、特性探索、场景探索、数据探索、边界探索、破坏性探索等。每种方法都有适用的场景和技巧。
- 第三阶段:实践练习。选择一个熟悉的产品进行探索练习,设定探索目标、记录探索过程、总结发现的问题。
通过实践积累探索经验。
- 第四阶段:总结提炼。将探索过程中发现的问题分类,总结问题类型和探索技巧,形成自己的探索方法论。
- 第五阶段:团队协作。学习如何在团队中组织探索性测试,包括探索任务分配、探索结果汇总、问题跟踪和经验沉淀。
实操案例
电商订单模块探索性测试实战
如何探索订单创建流程?
设定探索目标:验证订单创建的各种异常场景。探索步骤:
1)正常创建订单,确认基本流程正确。
2)探索商品库存不足时,订单创建是否正确拦截。
3)探索价格变动时,订单价格是否正确锁定。
4)探索并发创建时,是否会出现重复订单。
5)探索网络中断时,订单状态是否正确处理。
6)探索超时未支付时,订单是否自动取消。记录发现:每个异常场景的表现、系统提示、数据状态。
如何探索订单状态流转?
设定探索目标:验证订单状态流转的完整性和异常处理。探索步骤:
1)正常状态流转(待支付→已支付→待发货→已发货→已完成)。
2)异常流转:取消订单后能否再次支付?发货后能否取消?超时后状态是否正确?。
3)并发操作:支付和取消同时发生,状态是否一致?。
4)第三方回调:支付回调失败、重复回调、延迟回调的处理。
5)手动操作:客服手动改状态后的影响。记录发现:状态转换的正确性、异常处理的完整性。
如何从用户角色角度探索?
设定探索目标:从不同用户角色体验订单功能。买家角色探索:下单流程是否顺畅、支付方式是否齐全、订单查询是否清晰、退款流程是否便捷、投诉入口是否明显。商家角色探索:订单管理是否高效、发货操作是否便捷、退款处理是否合理、数据统计是否准确。客服角色探索:订单查询是否快速、状态修改是否可控、备注功能是否完善。每个角色记录体验问题和优化建议。
常见误区
面试中容易答错的关键点
把探索性测试等同于随意测试
这是最常见的误解。探索性测试不是随意点击,而是有方法、有目标、有记录的系统化探索。随意测试没有明确目标、没有系统方法、没有有效记录,效率低且不可复用。探索性测试要设定探索目标(探索什么模块、关注什么问题)、使用探索方法(角色探索、场景探索等)、记录探索过程(发现的问题、探索路径)。面试时要强调探索性测试的系统化特征,避免被误认为随意测试。
认为探索性测试不需要记录
探索性测试如果不记录,发现的问题和经验无法沉淀,下次探索重复劳动。记录内容包括:
探索目标(本次探索关注什么)。
探索路径(测试了哪些场景)。
发现的问题(缺陷详情和严重程度)。
经验总结(可以复用的探索思路)。
记录形式可以是思维导图、测试笔记、缺陷列表。面试时要说明记录的重要性和记录方法。
完全依赖探索性测试
探索性测试不能替代预设测试,两者是互补关系。预设测试(自动化回归、功能测试)验证已知功能是否正常,覆盖需求文档明确的内容。探索性测试发现预设测试遗漏的场景,补充文档未覆盖的内容。常规项目建议预设测试占70%、探索性测试占30%。面试时要说明两者的配合策略和比例分配。
忽视探索性测试的质量评估
探索性测试的产出需要评估质量,不能只看数量。评估维度包括:
发现问题的严重程度(高严重问题占比)。
发现问题的类型覆盖(是否覆盖多种问题类型)。
探索场景的完整性(是否覆盖核心场景)。
探索效率(单位时间发现问题数量)。
面试时要说明如何评估探索性测试的质量和效果。
探索性测试只适合新手
恰恰相反,探索性测试需要丰富的经验和判断力。新手往往只能做随意测试,难以做到系统化探索。资深测试人员能快速理解产品、设定合理目标、使用多种方法、有效判断问题。探索性测试的效果很大程度上取决于测试人员的经验和能力。面试时要说明探索性测试对测试人员能力的要求。
面试问答
高频面试问题及详细解答
你们怎么做探索性测试?
我们的探索性测试分为三个步骤:
第一步设定探索目标。按模块或风险设定目标,比如本次探索订单模块的异常场景,关注支付失败、库存不足、并发下单等风险点。
第二步系统化探索。使用多种探索方法:角色探索(从买家、商家不同角色体验)、场景探索(模拟真实用户购物流程)、数据探索(各种商品数量、价格、库存组合)、边界探索(库存临界值、支付金额边界)、破坏性探索(网络中断、超时操作)。
第三步记录和总结。记录每个发现的问题(发现步骤、异常表现、怀疑原因),探索结束后总结发现的问题类型、可以补充的测试用例、下次探索的建议。
探索性测试和预设测试怎么配合?
探索性测试和预设测试是互补关系。
预设测试负责验证已知功能,包括自动化回归、功能测试、场景测试,覆盖需求文档明确的场景和历史回归验证。
探索性测试负责发现未知问题,覆盖文档未明确的场景、边界异常、用户体验问题。
配合时机:提测后先跑冒烟测试和功能测试(预设测试),通过后进行探索性测试,探索发现的问题补充到预设测试用例。发布前再跑预设测试回归,探索性测试作为质量兜底。
比例分配:常规版本预设测试70%、探索性测试30%。大版本探索性测试占比提高,因为变更多、风险高。
探索性测试怎么保证覆盖?
探索性测试保证覆盖有三个层面:
第一,设定探索范围。不是无限探索,而是按模块、风险、时间设定范围,保证不遗漏重点。\n\n比如规定2小时探索订单模块,重点覆盖下单、支付、取消流程。
第二,使用多种方法。单一方法容易遗漏,组合使用角色探索、场景探索、数据探索、边界探索、破坏性探索等方法,保证探索多样性。
第三,事后验证覆盖。对照需求文档检查是否遗漏需求场景,对照历史缺陷检查是否遗漏缺陷类型,对照业务流程检查是否遗漏流程环节。探索后要评估覆盖是否完整,遗漏的要补充。
探索性测试发现的问题怎么处理?
探索性测试发现的问题分三类处理:
第一类是严重缺陷,立即提交缺陷报告,详细记录发现步骤、异常表现、复现条件,优先修复。
第二类是疑似问题,记录但不一定立即提交,可能需要进一步验证或补充信息后再决定。
第三类是优化建议,用户体验问题或优化点,记录后可以提交给产品团队评估。
探索结束后要分析问题:哪些问题类型可以补充到预设测试用例?哪些探索方法效果好值得下次复用?哪些场景遗漏了需要下次补充探索?这样探索性测试的经验可以沉淀和复用。
你用什么探索方法?举例说明。
我常用的探索方法有六种:角色探索(扮演不同用户角色体验系统,比如买家下单、商家发货、客服处理投诉)、场景探索(模拟真实用户场景,比如促销活动期间抢购、多人拼单、跨店铺购物)、特性探索(深入探索某个特性,比如优惠券的各种使用限制、叠加规则)、数据探索(各种数据输入组合,比如不同商品类型、价格范围、库存状态)、边界探索(边界值和临界条件,比如库存刚好为0、支付金额刚好超限)、破坏性探索(故意破坏流程,比如支付中途取消、网络中断重连、重复点击提交)。\n\n举例:探索订单模块时,我用角色探索从买家角度体验完整购物流程,发现了搜索结果排序不一致的问题。用破坏性探索测试支付中断,发现了订单状态卡在待支付的问题。