高效测试用例组织算法高效测试用例组织算法pairwise之之Python实现方法实现方法
下面小编就为大家带来一篇高效测试用例组织算法pairwise之Python实现方法。小编觉得挺不错的,现在就分享
给大家,也给大家做个参考。一起跟随小编过来看看吧
开篇:开篇:
测试过程中,对于多参数参数多值的情况进行测试用例组织,之前一直使用【正交分析法】进行用例组织,说白了就是把每个
参数的所有值分别和其他参数的值做一个全量组合,用Python脚本实现,就是itertools模块中product方法(又称笛卡尔积
法)。
正交分析法的优点是测试用例覆盖率100%,缺点测试用例数量庞大,执行用例消耗的人工巨大。
Pairwise (结对)算法源于对传统的正交分析方法优化后得到的产物,它的理论来自于数学统计。毫不避讳的说,本人看不懂
数学统计中的学术论文,只能从网上找一些通俗简单的说法来理解其基本含义。
网上很多人都实例都是用 【操作系统,浏览器,语言环境】来举例的,本人也做同样示例:
操作系统: W(Windows),L(Linux),Mac (Mac) ;浏览器:M(Firefox),O(Opera),IE;语言环境:C(中
文),E(英文)
按照正交分析法:会产生3x3x2=18种组合方式 ,测试用例覆盖率100%。
Pairwise结对测试用例组织法,可压缩到9种组合方式。因此有点是 测试用例数量少,缺点是一定会有漏测。
引论:引论:
Pairwise算法的核心理念算法的核心理念
1、一组测试用例(每个用例有3个参数的值组成,如[W,M,C])中每一个2个元素组合起来,两两组合,就有3种组合方式(有
位置的[W,M][W,C][M,C]);
2、如果这第一组测试用两两组合出的3种组合方式,对比原则:[W,M]只会和其他组的第一个元素对比,[W,C]只会和其他组
中第二个元素对比。。。。;
[W,M][W,C][M,C]这三个元素分别出现在其余有效组位置相同的元素中,就可以认为这一组Case为多余Case,并进行删除。
名词解释:【有效组】表示未被删除的组和未被对比过的组。举例:第1,3组被删除,则第4组要对比的有效组为第2,5,6,7...18
组。有效组这里踩过坑%>_<%
3、最终得到测试用例,就是结对算法计算出来的最优测试用例集合。
牛逼闪闪的学术证明 牛逼闪闪的学术证明
Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出来的。他是美国的一位心理统计学家。
Pairwise也正是基于数学统计和对传统的正交分析法进行优化后得到的产物。
Pairwise基于如下基于如下2个假设:个假设:
(1)每一个维度都是正交的,即每一个维度互相都没有交集。
(2)根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的。19%的缺陷
是由3个因子相互作用产生的。
因此,pairwise基于覆盖所有2因子的交互作用产生的用例集合性价比最高而产生的。
正文正文
一、思路一、思路
对一个测试场景如何从何从输入被测条件,到产出Pairwise测试用例,使用Python编程思路如下:
1、将allparams=[['M','O','P'],['W','L','I'],['C','E']]进行笛卡尔积全组合处理,生成正则分析法产生的全量测试用例集合的一维数
组(len=N);
2、将全量测试用例中的每个测试用例,都进行两两组合的分解处理,生成与全量测试用例集合 长度相同的二维数组(一维
len=N);
3、使用Python版Pairwise算法剔除无效测试用例,最终得到有效的结对测试用例集合;
代码第1,2函数利用Python自带数学计算库itertools编写,代码第3函数为本人死磕出来的代码。
评论0