什么是探索性测试?
可以测试的东西永远比你有时间测试的东西多。测试人员的任务就是选择在哪里以及如何最好地利用他们的时间进行测试。
- 漫无目的 - 目的 = 迷失
- 漫无目的 + 目的 = 探索
- 探索 + 判断 = 探索性测试
探索性测试允许测试人员在风险(失败的后果)和覆盖范围(观察所有可能的行为)之间取得平衡。它将测试设计和执行结合在一起:你可以利用迄今为止收集到的信息,立即改变你接下来要做的事情。
探索性测试如何与自动化测试相结合?
自动化测试中的代码告诉你期望发生的事情(在编写测试用例时,由编写人确定)。自动化测试的输出告诉你实际发生了什么(在运行测试时,由关注输出的人确定)。
自动化测试无法进行评估工作,告诉你期望结果与实际结果之间的差异是否存在风险。它们无法回答以下问题:
- 我们构建了正确的东西吗?
- 我们期望的东西是否发生了变化?
- 所有的事情是如何结合在一起的?
- 如果我们得到的结果发生了变化,这对客户来说是个问题吗?
- 我们没有考虑到什么?
有价值的测试包括自动化测试和探索性测试。
如何进行探索性测试?
测试人员在探索应用程序时要牢记这些内容。(熟练的探索性测试人员可以稍后向团队描述他们的思考过程,甚至在进行测试时描述。)
1. 比较的基准
当你发现一些意料之外的事情时,你需要一种方法向其他人解释为什么你没有预料到它。在决定某事是否出乎意料时,你可能会参考以下内容:
- 产品的历史
- 产品和组织的形象
- 关于产品的声明,包括市场营销、销售、文档、对话、用户故事等
- 用户的期望
- 产品本身的其他行为
- 产品的目的
- 法规和标准(法律要求、SLAs、可访问性标准)
2. 经验法则和清单
列出软件中出现问题的常见原因,有助于你识别自己产品中的类似问题。虽然这并不能阻止意外情况发生,但掌握一些常见原因可能会帮助你更早发现意外情况。
3. 决定关注点
为探索性测试设定一个任务,有助于决定哪些是范围内的,哪些是范围外的,以及你要完成什么任务,这样你就不会迷失方向。(探索就是有目的的漫游。)尝试写下以下内容:
- 你正在探索的地方(测试环境、新功能等)。
- 你正在使用/如何进行探索(自动化测试、日志、辅助扫描浏览器扩展等)。
- 你想要回答的问题(现有测试是否通过、我们是否以正确的级别记录日志、扩展是否发现新问题等)。
以下是一些任务方向的示例:
探索性测试难在哪里?
它不仅仅是四处探索!难以描述为什么、何时以及如何做。牢记我所列出的所有这些事项,同时需要练习。很难知道什么时候可以结束测试,或者做得是否足够。通常最好同时进行探索性测试和自动化测试,因此寻找满足这种条件的时间可能会很棘手,或者很难提倡。在进行工作时保持全程积极学习是很难的。
涉及到的所有链接集合
- James Lyndsay关于棘手问题的视频
- Katrina's Clokie对启发式和预言的描述
- James Bach的启发式测试策略模型
- Chris Kenst 关于探索性测试的博客
- Elisabeth Hendrickson的书《Explore It! Reduce Risk and Increase Confidence with Exploratory Testing》
- Michael Kelly关于旅游启发式的博客
- 可从the Ministry of Testing获取的: 启发式测试备忘录 的更新版本
- 可从the Ministry of Testing获取的:Simon Tomes的探索性测试描述图表
- 可从the Ministry of Testing获取的:Maaret Pyhäjärvi's 撰写的有关探索性测试中的自我管理的文章
- Maaret Pyhäjärvi 关于程序员探索性测试的文章