关于测试:用例设计-pairwise-testing-测试用例设计-概念篇1

118次阅读

共计 3139 个字符,预计需要花费 8 分钟才能阅读完成。

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 Int othersuncheckedoffyesdec
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?__…

正文完
 0