软件测试⽤例设计之Pairwise算法
Pairwise算法简介
Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年⾸先提出来的。他是美国的⼀位⼼理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进⾏优化后得到的产物。
测试过程中,对于多参数参数多值的情况进⾏测试⽤例组织,把每个参数的所有值分别和其他参数的值做⼀个全量组合,就是正交分析法,优点是测试⽤例覆盖率100%,缺点测试⽤例数量庞⼤,执⾏⽤例消耗的⼈⼯巨⼤。
Pairwise (结对)算法源于对传统的正交分析⽅法优化后得到的产物,它的理论来⾃于数学统计。
核⼼理念
1、⼀组测试⽤例(每个⽤例有3个参数的值组成,如[业务类型,证件类型,联系⽅式])中每⼀个2个元素组合起来,两两组合,就有3种组合⽅式(有位置的[业务类型,证件类型],[业务类型,联系⽅式],[证件类型,联系⽅式]);
鼠标键盘没反应2、这第⼀组测试⽤两两组合出的3种组合⽅式,与其他组元素的对⽐原则是 :[业务类型,证件类型]只会和其他组的第⼀个元素对⽐,[业务类型,联系⽅式]只会和其他组中第⼆个元素对⽐;
如果[业务类型,证件类型],[业务类型,联系⽅式],[证件类型,联系⽅式] 这三个元素分别出现在其余有效组相同位置的元素中,就可以认为这⼀组Case为多余Case,并进⾏删除。
3、最终得到测试⽤例,就是结对算法计算出来的最优测试⽤例集合.
对这段说明写个例⼦,如果⼀个测试场景有业务类型,证件类型,联系⽅式三个字段要填,它们可选值如图, 全覆盖的话需要3*3*3=27个⽤例.
上⾯第2点,体现在图上就是:
飞蛾扑火歇后语前两位是1和a的,只取⼀个,其他全部删除.
后两位是a和x的,只第⼀个,后⾯全部删除.
前两位是1和b的,只第⼀个,后⾯全部删除.
…
依次类推下去,就只剩下图⽚圈起来的9个组合.
Pairwise基于如下2个假设:
(1)每⼀个维度都是正交的,即每⼀个维度互相都没有交集。
(2)根据数学统计分析,73%的缺陷(单因⼦是35%,双因⼦是38%)是由单因⼦或2个因⼦相互作⽤产⽣的。19%的缺陷是由3个因⼦相互作⽤产⽣的。
因此,pairwise基于覆盖所有2因⼦的交互作⽤产⽣的⽤例集合性价⽐最⾼⽽产⽣的。
再来个例⼦:
银⾏的柜⾯开户业务,涉及⼗多个输⼊框,每个输⼊框都有多个选项,如果要全覆盖所有参数,⽤例数会⼗分庞⼤.
选其中5个输⼊框选项为例,
['开卡','开账户','开存折'],
['⾝份证','军官证','户⼝本','护照'],
['⼿机','固定电话'],
['现⾦','转账','待销账'],
['个⼈活期存款','随⼼取','个⼈定活','个⼈整存整取'],
这五个输⼊框的选项,完全组合的话,有3*4*2*3*4=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: ['开存折', '军官证', '⼿机', '转账', '随⼼取']
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论