乐趣区

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

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

简化后的后果如下:

listbox checkbox radio button textbox
0 checked on valid Int
others unchecked off invalid 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 Int 0
valid Int others
invalid Int 0
invalid Int others
Alpha Special Char 0
Alpha Special Char others

2.3 填写第三列

textbox(3) listbox(2) checkbox(2) radio button(2)
valid Int 0 checked
valid Int others unchecked
invalid Int 0 checked
invalid Int others unchecked
Alpha Special Char 0 checked
Alpha Special Char others unchecked

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

咱们发现第二列和第三列只有 0-checked 和 others-unchecked 状况,没有笼罩 0-unchecked 和 others-checked 的状况,所以咱们把第三行和第四行对调下。

textbox(3) listbox(2) checkbox(2) radio button(2)
valid Int 0 checked
valid Int others unchecked
invalid Int 0 unchecked
invalid Int others checked
Alpha Special Char 0 checked
Alpha Special Char others unchecked

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

2.4 填写第四列

textbox(3) listbox(2) checkbox(2) radio button(2)
valid Int 0 checked on
valid Int others unchecked off
invalid Int 0 unchecked on
invalid Int others checked off
Alpha Special Char 0 checked on
Alpha Special Char others unchecked off

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

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

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

textbox(3) listbox(2) checkbox(2) radio button(2)
valid Int 0 checked on
valid Int others unchecked off
invalid Int 0 unchecked on
invalid Int others checked off
Alpha Special Char 0 checked off
Alpha Special Char others unchecked on

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

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

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

2.5 阐明

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

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

加上两行,checkbox3 为 hex 和 dec

Textbox Listbox Checkbox1 Raido Checkbox2 Checkbox3
valid Int 0 checked on yes dec
valid Int others unchecked off no hex
valid Int others unchecked on no hex
invalid Int 0 unchecked on yes hex
invalid Int others checked on no dec
invalid Int others unchecked off yes dec
Alpha Special Char 0 checked off no dec
Alpha Special Char others unchecked on yes hex

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

退出移动版