以下测试场景的Pairwise算法是什么:浏览器:M,O,P运行平台:W(windows),L(linux),i(ios)语言:C(chinese),E(english)应该如何设计功能测试用例?根据数理统计分析,73%的缺陷(单因素占35%,双因素占38%)是由单因素或双因素相互作用产生的。19%的缺陷是由3个因素的相互作用产生的。换句话说,大多数错误是由条件的成对组合引起的。Pairwise算法最早由美国心理统计学家L.L.Thurstone于1927年提出。Pairwise算法基于成对组合筛选出具有成本效益的用例集。其思想是:如果某一组用例的成对组合结果出现在其他组合中,则删除该组用例,简化用例。针对以上测试场景,笛卡尔积可设计18个成对测试用例:1、MWC2、MWE3、MLC4、MLE5、MIC6、MIE7、OWC8、OWE9、OLC10、OLE11、OIC12、OIE13、PWC14、PWE15、PLC16、PLE17,PIC18,PIE对于第18个用例PIE,成对组合为PI,PE,IE,PI在17号,PE在16号,IE在12号已经出现,所以第18个用例可以过滤掉.按照这个算法继续筛选,最后剩下9个用例:1、MWC4、MLE6、MIE7、OWE9、OLC11、OIC14、PWE15、PLC17、PIC用例减少50%!而且维度越多越明显,当有10个维度时4*4*4*4*3*3*3*2*2*2=55296个测试用例时,pairwise是24个,是原来的0.04%测试用例规模。Python实现源码已经上传:https://github.com/dongfanger/python-tools/blob/main/pairwise.py#!/usr/bin/python#encoding=utf-8"""@作者:Don@Date:2021/11/0320:34@Desc:"""importcopyimportitertoolsfromsysimportstdoutfromloguruiimportloggerdefparewise(option):"""pairwisealgorithm"""cp=[]#Cartesianproducts=[]#Pairwisesplitforxineval('itertools.product'+str(tuple(option))):cp.append(x)s.append([iforiinitertools.combinations(x,2)])logger.info('笛卡尔积:%s'%len(cp))del_row=[]bar(0)s2=copy.deepcopy(s)foriinrange(len(s)):#匹配每一行if(i%100)==0ori==len(s)-1:bar(int(100*i/(len(s)-1)))t=0forjinrange(len(s[i])):#判断每行用例的pairwisesplit,是否出现在其他行flag=Falsefori2in[xforxinrange(len(s2))ifs2[x]!=s[i]]:#找到相同的列ifs[i][j]==s2[i2][j]:t=t+1flag=Truebreakifnotflag:#相同未找到列,因此无需查找剩余的列breakift==len(s[i]):del_row.append(i)s2.remove(s[i])res=[cp[i]foriinrange(len(cp))ifinotindel_row]logger.info('filtered:%s'%len(res))returnresdefbar(i):"""进度条""“c=整数(i/10)jd='\r%2d%%[%s%s]'a='■'*cb='□'*(10-c)msg=jd%(i,a,b)stdout.write(msg)stdout.flush()if__name__=='__main__':pl=[['M','O','P'],['W','L','I'],['C','E']]a=parewise(pl)print()foriina:print(i)输出结果:100%[■■■■■■■■■]('M','W','E')('M','L','E')('M','I','C')('O','W','E')('O','L','E')('O','I','C')('P','W','C')('P','L','C')('P','I','E')2021-11-0711:38:56.850|INFO|__main__:parewise:24-笛卡尔积:182021-11-0711:38:56.850|INFO|__main__:parewise:45-filtered:9References:https://blog.csdn.net/ztf312/article/details/78792906https://www.cnblogs.com/df888/p/11747616.html
