all-pairs testing 或者 pairwise testing ,它是组合测试的一种办法,是软件测试畛域针对黑盒测试提出的一个卓有成效的办法之一。

Pairwise也正是基于数学统计和对传统的正交分析法进行优化后失去的产物。

Pairwise基于如下2个假如:

  • 每一个维度都是正交的,即每一个维度相互都没有交加;
  • 依据数学统计分析,73%的缺点(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的,19%的缺点是由3个因子相互作用产生的。因而,Pairwise基于笼罩所有2因子的交互作用产生的用例汇合性价比最高而产生的。


咱们先从一个例子来感触下Pairwise testing。

假如咱们有一个产品,他的组成和值的状况如下。

  • listbox: 0-9
  • checkbox: checked, unchecked
  • radio button: on, off
  • textbox: 1-100

如果全笼罩的话,关正向的测试用例就有 1022*100=4000 ,如果包含反向的测试用例的话,则 >4000 条测试用例。

1 应用等价类划分缩小测试用例:

对于listbox,能够抉择的值是0-9,因为0最非凡(其余的值要么是负数要么是正数), 所以,对于checklist 咱们把它简化成 0others(1-9)

checkbox 和 radio button 曾经无奈再简化了,则持续保留

对于textbox,能够输出的值是1-100,咱们能够把它的值简化成 valid Int,invalid Int and Alpha Special Char

简化后的后果如下:

listboxcheckboxradio buttontextbox
0checkedonvalid Int
othersuncheckedoffinvalid Int
Alpha Special Char

则有 222*3=24 个testcases,也就是咱们把 4000+的testcases降到了24个testcases

2 应用pairwise的办法进一步缩小测试用例

步骤:

  • 变量排序
  • 依据第二个变量计算出第一个变量须要的用例数(行数)
  • 每减少一列(n),则须要看 1和n,2和n,。。。 n-1和n之间是否笼罩了两列之间所有的组合,如果没有则适当调整高低的地位。直到所有都合乎。
  • 如何还是有不合乎的,则适当减少几行。

2.1 给变量排序

含有值越多的变量放在第一位,第二多的第二位,起码的最初一位,以此类推。

textbox(3)listbox(2)checkbox(2)radio button(2)

2.2 填写第一列和第二列

依据第一列和第二列值的可能性计算出第一列须要几行,这个例子中,第一列3个值,第二列2个值,所以须要3*2=6行

textbox(3)listbox(2)checkbox(2)radio button(2)
valid Int0
valid Intothers
invalid Int0
invalid Intothers
Alpha Special Char0
Alpha Special Charothers

2.3 填写第三列

textbox(3)listbox(2)checkbox(2)radio button(2)
valid Int0checked
valid Intothersunchecked
invalid Int0checked
invalid Intothersunchecked
Alpha Special Char0checked
Alpha Special Charothersunchecked

查看下每一列和第三列之间是否都笼罩了不同组合状况。

咱们发现第二列和第三列只有 0-checked 和 others-unchecked状况,没有笼罩 0-unchecked 和 others-checked的状况,所以咱们把第三行和第四行对调下。
textbox(3)listbox(2)checkbox(2)radio button(2)
valid Int0checked
valid Intothersunchecked
invalid Int0unchecked
invalid Intotherschecked
Alpha Special Char0checked
Alpha Special Charothersunchecked

这样第一列和第三列,第二列和第三列都能笼罩不同的组合状况。

2.4 填写第四列

textbox(3)listbox(2)checkbox(2)radio button(2)
valid Int0checkedon
valid Intothersuncheckedoff
invalid Int0uncheckedon
invalid Intotherscheckedoff
Alpha Special Char0checkedon
Alpha Special Charothersuncheckedoff

查看下每一列和第四列之间是否都笼罩了不同组合状况。

第一列和第四列都笼罩了。 第二列和第四列没有笼罩 0-off 和 others-on的状况

所以咱们把五行和第六行换一下地位,如下

textbox(3)listbox(2)checkbox(2)radio button(2)
valid Int0checkedon
valid Intothersuncheckedoff
invalid Int0uncheckedon
invalid Intotherscheckedoff
Alpha Special Char0checkedoff
Alpha Special Charothersuncheckedon

再次查看下每一列和第四列之间是否都笼罩了不同组合状况.发现都合乎。

则最终后果就是下面这个表,每一行代表一个测试用例。

应用pairwise组合测试的办法,咱们把测试用例从24个降到了6个。

2.5 阐明

下面的例子比较简单,所以通过调整地位最终能满足要求,可是有时候变量多的时候,无论你怎么调整都没法满足要求,兴许满足了第三列和第四列,可是第二列和第四列就不满足了。这时候能够适当思考加几行来解决这个问题。

比方在下面的例子里再加两个checkbox这时就无奈满足,则须要加上两行:

加上两行,checkbox3为 hex和dec

TextboxListboxCheckbox1RaidoCheckbox2Checkbox3
valid Int0checkedonyesdec
valid Intothersuncheckedoffnohex
valid Intothersuncheckedonnohex
invalid Int0uncheckedonyeshex
invalid Intotherscheckedonnodec
invalid Intothersuncheckedoffyesdec
Alpha Special Char0checkedoffnodec
Alpha Special Charothersuncheckedonyeshex

3 pairwise的优缺点

毛病:
  • 业务上高概率的组合受到的关注不够
  • 不晓得元素之间的依赖关系
适宜的场景:
  • 变量的组合特地大的时候
  • 参数值很容易划分等价类

4 总结

后面的例子,让咱们对于因子组合测试笼罩Pairwise有比拟直观的理解。不过对于人肉生成pairwise测试用例还是有点简单的,特地当你的变量特地多的时候,目前市面上也有一些工具能够帮你生成pairwise测试用例。

比方:

  • 能够间接在python中应用的allpairspy库
  • 微软的PICT
  • Hexawise
  • Automatic Effcient Test Generator or AETG

在上面的章节我将会介绍几个工具的应用。

参考:
https://en.wikipedia.org/wiki...
https://mp.weixin.qq.com/s?__...