探索性测试是众多测试种类中的很基本的一种。凡是做过测试的人,都会有意识或无意识的做过探索性测试。
但是探索性测试本身是什么意思呢?
其实探索性测试正如它的名字一样,需要探索才知道测试的结果。这是一种测试设计与执行同步的测试。
而且,下一步要做什么,很大程度上依赖于上一步测试的结果是什么。
其实在业内,大家对于探索性测试没有给予太多的尊重。很多人可能会说,不是手动测试嘛,有什么特别的,什么人都能做。
前半部分说对了,基本上是手动测试。
但是这可不是什么人都能做的。探索性测试不是ad hoc测试(随机测试)。需要系统的思考,需要设定比较具体的测试目标。
通常正确的做法是把有经验的人放去做探索性测试,而其他类型的测试(比如回归测试,随机测试等等)可以让稍欠经验的人来进行。
很多公司都进行了自动化测试,为什么我们还需要探索性测试呢。
为了找到产品的风险,找到产品不稳定的地方。
做IT这个行业的都知道,我们虽然是按着一个需求去做的,但是做出来的东西跟预期的差别总是存在。也是我们所得到,跟我们所期望的不会完全匹配。我们可能没有完全达到期望的,但是又开发出了一些附加的东西,这些附加的东西可以是bug,也可以是无伤大雅的特性,也可能是存在不稳定性的功能块。这些都是需要找出来的。
自动化测试往往实现的是你已经知道会发生什么了,你去assert那个期望值。
探索性测试通常是,你不知道会发生什么,去试试。
经验越多的人,试试的方向更正确。
至于怎么做,其实根据产品本身的特征,可以有不同的做法。
比如说你可以设定一个目标,说我想看看产品在一些边界条件下会怎么工作。然后通过输入边界条件来看是不是得到可接受的结果。
比如说你可以把目标设为“我想不断的重复这个添加删除操作看看产品怎么反应”,然后不断反复这个添加删除的动作,看看系统会不会有异常。
比如说我想看看在批量查询的过程中随便点击查询窗口会怎么样,看看会不会发生系统停止响应。
。。。
正如探索性测试的初衷所说,我们要找到风险所在。在经过了一系列的尝试以后,我们要给出相应的结论,什么地方出问题或者可能出问题,我们怎么样发现的(做了什么操作,用了什么数据,看到什么现象,等等)。
有时间会找个案例上来详细分析。