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 AllPairsparameters = [['开卡','开账户','开存折'],['身份证','军官证','户口本','护照'],['手机','固定电话'],['现金','转账','待销账'],['个人活期存款','随心取','个人定活','个人整存整取'],
]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: ['开存折', '军官证', '手机', '转账', '随心取']

软件测试用例设计之Pairwise算法相关推荐

  1. 软件测试用例设计实用经验之谈

    概述 软件测试用例设计最重要的前提是掌握业务知识,加上一定的测试用例设计方法,软件测试的工作实际就非常简单了,多测试几个实际项目技能就自然提高了. 我把软件测试用例设计分成4个部分: ·测试类型 ·设 ...

  2. 软件测试用例设计方法(一)

    目录 软件测试用例设计之等价类划分法 一.等价类划分法的定义 二.等价类划分法的术语 三.等价类划分原则 四.实例演示(三角形问题和档案管理系统问题) 软件测试用例之边界值分析法 一.边界值分析法定义 ...

  3. 手机软件测试用例设计

    实例讲解手机软件测试用例设计 实例讲解手机软件测试用例设计,测试伴随在整个手机软件开发的各个阶段中,测试质量的高低直接关系到手机软件的可用性,友好性,可靠性.可以说,测试环节是手机软件开发的重要环节, ...

  4. 软件测试怎么测边界值,软件测试用例设计之边界值分析法(示例代码)

    软件测试用例设计之边界值分析法 一.定义 对输入或输出的边界值进行测试的一种黑盒测试方法.通常边界值分析法是作为对等价类划分法的补充,其测试用例来自等价类的边界 二.与等价类划分的区别 边界值分析法首 ...

  5. 【测试基础】软件测试用例设计方法

    软件测试用例设计方法 软件测试的核心就是测试用例的编写!!! 那么我们应该学习如何来编写软件测试用例呢? 通常我们会通过学习几种设计放了编写软件软件用例它们分别是等价类划分,边界值分析法,场景法,错误 ...

  6. 【经验】软件测试用例设计之错误推测法

    方法定义 错误推测法是指:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法. 主要还是一个慢慢积累的过程.一般来说,常见的错误推测法都是 ...

  7. 软件测试用例设计“八法归一”——因果阵

    [本文出自天外归云的博客园] 八法 测试用例设计有八法: 1. 等价类划分法 2. 边界值分析法 3. 错误推测法 4. 因果图法 5. 路径覆盖法 6. 功能图法 7. 正交试验设计法 8. 场景设 ...

  8. 软件测试用例设计方法分析

    熟悉软件方法的六个纬度(测试角度) 1.架构:无架构 ---- 例如:单机版  安装,卸载 B/S 浏览器 ---- 兼容性,功能,性能,GUI 服务器 ---- 环境搭建(大的平台有专人负责部署小的 ...

  9. 手机软件测试用例设计实践

    一.测试用例设计概述 测试伴随在整个手机软件开发的各个阶段中,测试质量的高低直接关系到手机软件的可用性,友好性,可靠性.可以说,测试环节是手机软件开发的重要环节,是整个开发过程的"中枢神经& ...

最新文章

  1. 响应式网页的布局设计
  2. git提交忽略权限问题
  3. Javaweb中利用kaptcha生成验证码
  4. 数据结构:线性数据结构(2)-队列(栈,队列,deques, 列表)
  5. IOS开发基础之大转盘案例
  6. MMKV集成与原理,薪资翻倍
  7. 【JavaScript】关于delete
  8. Linux学习笔记之查看Linux版本信息
  9. 机器码(machine code)和字节码(byte code)是什么?
  10. 服务器系统报ata6,ATA_5.4考试管理系统使用手册[最终版].doc
  11. 站群软件-免费站群软件
  12. java如何知道城市是省会_全国各省的省会都是怎么确定的?
  13. SSL P2712 跳格子
  14. 统信UOS命令大全 麒麟系统命令大全 Linux常用命令操作大全(非常全非常详细) ubuntu命令大全常用操作命令大全
  15. 2022-2023上学期 奖状的清单
  16. Android音乐播放器-热门榜单
  17. 抖音,B站,小红书三大平台品牌投放特征与建议
  18. 把图片转成像素点保存到Excel中
  19. 现代控制理论——状态空间表达式的能控性标准型和能观性标准型
  20. C语言中有bool类型吗?

热门文章

  1. windows下,基于python3的wxpython体验+cxfreeze6.0使用
  2. DRM框架(vkms)分析(6)---- plane初始化
  3. 中兴捧月比特派E题——反复横跳
  4. 学生管理系统(大数据实验室)
  5. 【机器学习】一文读懂正则化与LASSO回归,Ridge回归
  6. PPP协议讲解(PPP连接状态、PPP报文)
  7. 逆向知识内存ARM常用的汇编指令合集
  8. 毕设 深度学习图像风格迁移
  9. 深圳内推 | 香港中文大学(深圳)路广利老师招聘NLP方向研究助理
  10. python怎么输出所有奇数_python输出100以内奇数的几种输出方式-Go语言中文社区