什么是探索性测试
探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
探索性测试主张学习,强调同时展开测试设计、执行、并从结果中获得反馈,从而持续优化测试。这是一种主张即兴发挥、快速试验、快速学习和动态调整的测试思维方式。这也是个迭代的过程,刚开始并不需要考虑地绝对充分,快速设计一些场景,然后从结果中获得反馈,再进一步优化测试,从而使测试更加丰富。这与敏捷开发“小步迭代、快速反馈”的理念不谋而合。
探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。
探索性测试过程
用语言来总结的话,探索性测试可以定义为由以下过程构成:
➤ 明确测试范围
➤ 识别被测对象的期望功能和需求
➤ 了解被测对象的基本性状
➤ 发现被测对象的潜在不稳定区域
➤ 创建一个测试纲要并用它来指导测试
这里我们提到的识别,了解,发现,创建这个过程在探索性测试中可以多次循环,并且并没有固定的顺序限制。
探索性测试常用的方法
探索性测试最主要应用到我们测试理论中的设计技术就是“基于经验的测试”和“错误推测法”了。 更具体一点的话,我们可以在测试中应用以下的一些思路:
➤ 破坏法 - 用常规手段破坏系统的正常运作进程 - 比如在提交表单的过程中刷新页面中断提交操作
➤ 极限法 - 尝试去接触到系统处理的极限所在 - 比如在文本处理的控件内尝试最大输入的可能性
➤ 取消法 - 测试系统能不能正确的处理用户的取消和删除操作 - 比如在一个手机APP打开某模块时,按下home键后,APP有没有正确处理?
➤ 暴力法 - 使用非常规操作,看看软件会不会发生崩溃或异常 - 比如测试手机输入键盘时,同时按下多个按键
➤ 逆向法 - 通过相反的思维来思考问题,软件能处理异常情况吗 - 比如我们通常都会关注一个系统的支付能不能正常工作,那么当遇到无效支付信息的处理呢?
优点与缺点
优点
- 鼓励创造性,探索性测试可以激发测试人员的积极性。
- 探索性测试可以加深测试人员对被测系统的了解 。
- 探索性测试可以为后续测试覆盖的延申提供思路 - 在探索性测试中我们可以发现常规测试忽视掉的细节,从而指导我们后续对测试用例库的维护
- 可增加机会找到新的、未知的程式缺陷,可以帮助我们定位到隐藏比较深的问题。
- 允许测试者花较多的时间去测试一些有趣或复杂的状况。
- 可让你知道系统是否容易使用。
- 可变通的,有弹性的。
- 它比脚本测试有趣,因为它不会一成不变。
缺点
- 不容易被协调及调整。
- 无法对系统作全面性的测试。
- 提供有限的测试可信度。
- 非常的依靠测试者的领域知识(domain knowledge)以及技术。
- 无法保证最重要的程序错误一定被发现。
- 并不适用要执行很久的测试(例如执行一整个晚上的测试)。
来源:
1、部分来源百度百科
2、https://www.bilibili.com/read/cv1221742/