其实我一开始是不想加的,过滤功能,我也不是没想过。但是有违测试基本理论,而且会有极大的风险,所以很多年前我就判断不能加这个过滤功能。不过既然榜一大哥作为金主,要求了,那咱就加!反正管加不管埋!有风险就有风险!
下一节会给大家具体实现这个功能,这一章,就来说说,为什么正交工具不能加最后的过滤功能。
这个过滤功能,冷不丁的一看,哇塞,太人性化了,真的是个很好的设计。但是如果你精通测试理论就会知道,其实这么做不对,但是也仅仅是理论上的风险,实际使用中,这样过滤的益处会大于弊端,综合考虑还是可以做的,但是我们要明白,要懂里面的原理才能放心。
首先,我们先要明白正交法,是什么,能用在哪里 这些基础理论!
在处理,多个输入条件的功能时,为了整理出各种各样的用例,诞生了俩种对立的方法:正交表 和 判定表
多个输入条件之间,如果有逻辑关联,那么必须只能用判定表,判定表相当于穷举然后过滤,虽然麻烦,但是可以保证一个不漏。
多个输入条件之间,如果没有逻辑关联,那么可以用正交,当然穷举所有可能的组合是最安全的,但是数量太庞大的时候,可以用正交来进行一定程度的删减,正交删减后的结果,只保证了 任意俩个条件的任意子状态都出现在同一条用例里,来测试 会不会有这种冲突出现。从程度和经验分析,这种其实并不100%安全,但却是性价比最高的手段。
举例子:word文档打印功能
输入有以下几个条件 和 对应的子状态:
纸张大小:A3,A4,A5
颜色:黑白,彩色
面数:单面,双面
在这三个条件中,如果我们穷举所有用例,那么一共是如下:
3*2*2 = 12种情况。
正交的话,只有:
A3- 黑白-单面
A4-彩色-双面
A5-彩色-单面
A5-黑白-双面
A4-黑白-单面
A3-彩色-双面
(表由工具和专业算法生成,结果放心。)
只有6种,而这6种却包含了任意俩个条件的子状态 都一起出现这个情况。在日常实际中,这个可以覆盖绝大多的bug了,算是比较成功的技术。
不过过滤功能是怎么回事呢。比如榜一大哥的需求中说,A3纸,不能和黑白颜色去匹配,没有这个情况。
然后过滤功能就自动去掉这个情况的用例了,或者压根不去这么匹配。这个风险在哪呢?
这个风险就在于,为什么榜一大哥会有这样奇怪的规定! 因为只要有这种规定,就意味着这些输入条件之间,是有逻辑关系的!而根据正交的定义,这种情况,是不能用正交的!
为什么呢?因为一旦出现逻辑关系,那么他们的bug发生概率会非常非常高,远高于无关联的。而正交工具本身的存在就是删减了大部分用例,这些被删除的用例中也一定带着逻辑关联的输入组合,这里面大概率会有很多bug,而却全被正交给自动删除掉了,此时的风险是很大的。
所以这种情况正交不能用也不敢用,只能用判定表也就是穷举。这也是为什么判定表会存在。如果正交那么可靠,能处理有逻辑关联的输入,那么谁还会写判定表穷举呢?
而且,上面原因只是其一。
其二是 ,一但过滤掉 比如A3-黑白这个选项,那么第一条用例就没了,也就是说 后面那个“单面” 也没无情删掉了,整个结果中,A3 - 单面 这组合也相当于都没有了,万一 A3和单面配合也会出现bug呢?
结论:有逻辑关联的输入,用正交风险高。而在正交结果中再次删减过滤,则风险更高。
真正可以放心的过滤功能应该在判定表上,也就自动穷举后再过滤。
不过上述的风险,只是存在于理论中,100个bug 也许因为你的正交过滤漏掉了一个。但是你获得的收益却很高,可以让测试用例减少很多个,减轻很多工作量,提高效率。