软件测试⽤例设计之Pairwise算法
Pairwise算法简介
Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年⾸先提出来的。他是美国的⼀位⼼理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进⾏优化后得到的产物。
测试过程中,对于多参数参数多值的情况进⾏测试⽤例组织,把每个参数的所有值分别和其他参数的值做⼀个全量组合,就是正交分析法,优点是测试⽤例覆盖率100%,缺点测试⽤例数量庞⼤,执⾏⽤例消耗的⼈⼯巨⼤。
Pairwise (结对)算法源于对传统的正交分析⽅法优化后得到的产物,它的理论来⾃于数学统计。
核⼼理念
1、⼀组测试⽤例(每个⽤例有3个参数的值组成,如[业务类型,证件类型,联系⽅式])中每⼀个2个元素组合起来,两两组合,就有3种组合⽅式(有位置的[业务类型,证件类型],[业务类型,联系⽅式],[证件类型,联系⽅式]);
2、这第⼀组测试⽤两两组合出的3种组合⽅式,与其他组元素的对⽐原则是 :[业务类型,证件类型]只会和其他组的第⼀个元素对⽐,[业务类型,联系⽅式]只会和其他组中第⼆个元素对⽐;
如果[业务类型,证件类型],[业务类型,联系⽅式],[证件类型,联系⽅式] 这三个元素分别出现在其余有效组相同位置的元素中,就可以认为这⼀组Case为多余Case,并进⾏删除。
3、最终得到测试⽤例,就是结对算法计算出来的最优测试⽤例集合.
对这段说明写个例⼦,如果⼀个测试场景有业务类型,证件类型,联系⽅式三个字段要填,它们可选值如图, 全覆盖的话需要333=27个⽤例.
上⾯第2点,体现在图上就是:
前两位是1和a的,只取⼀个,其他全部删除.
后两位是a和x的,只第⼀个,后⾯全部删除.
前两位是1和b的,只第⼀个,后⾯全部删除.
依次类推下去,就只剩下图⽚圈起来的9个组合.
软件测试appPairwise基于如下2个假设:
(1)每⼀个维度都是正交的,即每⼀个维度互相都没有交集。
(2)根据数学统计分析,73%的缺陷(单因⼦是35%,双因⼦是38%)是由单因⼦或2个因⼦相互作⽤产⽣的。19%的缺陷是由3个因⼦相互作⽤产⽣的。
因此,pairwise基于覆盖所有2因⼦的交互作⽤产⽣的⽤例集合性价⽐最⾼⽽产⽣的。
再来个例⼦:
银⾏的柜⾯开户业务,涉及⼗多个输⼊框,每个输⼊框都有多个选项,如果要全覆盖所有参数,⽤例数会⼗分庞⼤.
选其中5个输⼊框选项为例,
['开卡','开账户','开存折'],
['⾝份证','军官证','户⼝本','护照'],
['⼿机','固定电话'],
['现⾦','转账','待销账'],
['个⼈活期存款','随⼼取','个⼈定活','个⼈整存整取'],
这五个输⼊框的选项,完全组合的话,有34234=288个测试⽤例.
然⽽⽤Pariwise算法过滤后,只需要测试19个⽤例即可覆盖绝⼤多数场景.
代码演⽰
from allpairspy import AllPairs
parameters = [
['开卡','开账户','开存折'],
['⾝份证','军官证','户⼝本','护照'],
['⼿机','固定电话'],
['现⾦','转账','待销账'],
['个⼈活期存款','随⼼取','个⼈定活','个⼈整存整取'],
]
print("PAIRWISE:")
for i, pairs in enumerate(AllPairs(parameters)):
print("{:2d}: {}".format(i, pairs))
```
输⼊结果
PAIRWISE:
0: ['开卡', '⾝份证', '⼿机', '现⾦', '个⼈活期存款']
1: ['开账户', '军官证', '固定电话', '转账', '个⼈活期存款']
2: ['开存折', '户⼝本', '固定电话', '待销账', '随⼼取']
3: ['开存折', '护照', '⼿机', '转账', '个⼈定活']
4: ['开账户', '护照', '⼿机', '待销账', '个⼈整存整取']
5: ['开卡', '户⼝本', '固定电话', '现⾦', '个⼈整存整取']
6: ['开卡', '军官证', '⼿机', '待销账', '个⼈定活']
7: ['开账户', '⾝份证', '固定电话', '转账', '个⼈定活']
8: ['开存折', '⾝份证', '⼿机', '现⾦', '随⼼取']
9: ['开存折', '军官证', '⼿机', '现⾦', '个⼈整存整取']
10: ['开账户', '户⼝本', '⼿机', '转账', '随⼼取']
11: ['开卡', '护照', '固定电话', '转账', '随⼼取']
12: ['开账户', '护照', '⼿机', '现⾦', '个⼈定活']
13: ['开存折', '户⼝本', '⼿机', '转账', '个⼈活期存款']
14: ['开存折', '⾝份证', '⼿机', '待销账', '个⼈活期存款']
15: ['开存折', '⾝份证', '⼿机', '转账', '个⼈整存整取']
16: ['开存折', '户⼝本', '⼿机', '转账', '个⼈定活']
17: ['开存折', '护照', '⼿机', '转账', '个⼈活期存款']
18: ['开存折', '军官证', '⼿机', '转账', '随⼼取']
下⾯是配套资料,对于做【软件测试】的朋友来说应该是最全⾯最完整的备战仓库,这个仓库也陪伴我⾛过了最艰难的路程,希望也能帮助到你!
最后: 可以在:程序员⼩濠 ! 免费领取⼀份216页软件测试⼯程师⾯试宝典⽂档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联⽹程序原理、Mysql数据库、抓包⼯具专题、接⼝测试⼯具、测试进阶-Python编程、Web ⾃动化测试、APP⾃动化测试、接⼝⾃动化测试、测试⾼级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” ⼀键三连哦!喜欢软件测试的⼩伙伴们,可以加⼊我们的测试技术交流扣扣:779450660⾥⾯有各种软件测试资源和技术讨论)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。