[用例设计] pairwise testing 测试用例设计 - 概念篇(1)

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

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

Pairwise基于如下2个假设:

  • 每一个维度都是正交的,即每一个维度互相都没有交集;

  • 根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的,19%的缺陷是由3个因子相互作用产生的。因此,Pairwise基于覆盖所有2因子的交互作用产生的用例集合性价比最高而产生的。

image

我们先从一个例子来感受下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

则有 2223=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/All-pairs_testing
https://mp.weixin.qq.com/s?__biz=MzU2OTYyMzIwMw==&mid=2247483915&idx=1&sn=15b3f01c79da487058e9ddd579050d8b&chksm=fcfa95c7cb8d1cd1242bb9ff30db818f26faafd0b887738b2bb16a94e57be43b9e11d59ccce7&token=341465894&lang=zh_CN#rd

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351