软件测试用例设计之Pairwise算法

article/2025/10/20 19:29:30

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: ['开存折', '军官证', '手机', '转账', '随心取']

http://chatgpt.dhexx.cn/article/R50Fy0Ek.shtml

相关文章

磁盘配额中quotacheck不能创建aquota.user和aquota.group文件的问题

在centos6.5学习中有关磁盘配额的内容中,发现quotacheck -augv 命令无法创建aquota.group 和aquota.user文件, 操作系统挂载在/home下,经排查发现是SELinux的问题,使用setenforce 0命令将其关闭后,重新执行quotacheck…

Linux从入门到精通(八)——Linux磁盘管理

文章篇幅较长,建议先收藏,防止迷路 文章跳转Linux从入门到精通(八)——Linux磁盘管理goLinux从入门到精通(九)——Linux编程goLinux从入门到精通(十)——进程管理goLinux从入门到精…

Linux:Quota 的基本命令​​​​​​​

在开始进行 quota 的实作之前,我们得来了解一下 quota 要使用的指令啰! 基本上分为两种,一种是查询功能(quota, quotacheck, quotastats, warnquota, repquota),另一种则是编辑 quota 的内容( …

01_Linux系统管理_基础知识_高级文件系统管理_磁盘配额(quota)

环境 虚拟机:VMware-10.0.7 build-2844087Linux系统:CentOS 6.8远程工具:Xshell 6 (Build 0197) 01_Linux系统管理_基础知识_高级文件系统管理_磁盘配额 一、什么是磁盘配额(quota) 磁盘配额概念 对用户和用户组使用磁…

linux 系统配额管理功能,磁盘配额管理_Linux教程_Linux公社-Linux系统门户网站

在多用户系统中,如果没有对用户使用的磁盘空间做出限制,用户无限制地存放数据和文件,可能会导致系统磁盘空间告警。如果存放的是无用数据,就会导致磁盘空间白白浪费。磁盘配额可以限制用户或组在磁盘上存放文件的空间,…

Linux复习笔记

Linux复习笔记 常识说明 目录结构 Linux以树型结构管理文件,其最上层文件夹为 / ,也就是根目录。 如图所示,图中展示了一部分文件夹的结构: 所有的文件夹都属于根目录的子文件夹。 安装好系统后,根目录会挂载到一…

linux对目录空间使用限制,Linux quotacheck命令使用详解:检查磁盘的使用空间和限制...

quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设置用户和…

Linux常用命令——quotacheck命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) quotacheck 检查磁盘的使用空间与限制 补充说明 quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotach…

Linux quotacheck失败

我找了多少个帖子才发现解决这个问题的啊...最终还是靠FQ找的这位大佬的文章 http://www.2daygeek.com/quotacheck-error/# 当我在执行quotacheck -avug的时候出现如下的错误: quotacheck: 无法从 /dev/sdb1 上的文件名猜测其格式,请在命令行中指定一个…

Linux系统输入quotacheck -ugcv /dev/sdb1报错

quotacheck -ugcv /dev/sdb1 报错处理 报错大多因为selinux没有关闭 [rootlocalhost fanhuilin]# quotacheck -ugcv /dev/sdb1 quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid runni…

【Shell 命令集合 磁盘管理 】Linux 检查和创建磁盘配额数据库 quotacheck命令使用教程

目录标题 描述语法格式参数说明错误情况 注意事项底层实现示例示例一示例二示例三示例四示例五示例六示例七 用c语言实现结语 Shell 命令专栏:Linux Shell 命令全解析 描述 quotacheck命令是Linux系统中的一个磁盘配额管理工具,用于检查和创建磁盘配额数…

linux quotacheck命令参数及用法详解---Linux系统管理

功能说明:检查磁盘的使用空间与限制。 语  法:quotacheck [-adgRuv][文件系统...] 补充说明:执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设…

第一性原理 《禅与计算机程序设计艺术》 / 陈光剑

第一性原理 《禅与计算机程序设计艺术》 / 陈光剑 任何事物背后必有道理。 什麼是第一性原理 第一性原理(First Principle Thinking),指的是回歸事物最基本的條件,將其拆分成各要素進行解構分析,從而找到實現目標最優路徑的方法。 該原理源於古希臘哲學家亞里士多德提出的一…

“风味人间”与计算机程序设计艺术《禅与计算机程序设计艺术》 / 陈光剑

来自“风味人间”的类比 所谓美食,不过是一次又一次的相逢。我们带您穿越山海之间,偶尔的落地生根,成就万千肴变,随即化作滚滚红尘,穿越香料歧路,几度江湖夜雨后,点亮万家灯火。 《风味人间》 浮华随风去,一菜一江湖。无论置身繁华闹市,还是身居乡野陋巷,世上的滋味,…

《禅与计算机程序设计艺术》/ By 禅与计算机程序设计艺术GPT-4

以《禅与计算机程序设计艺术》为文章标题,写一篇关于软件架构设计哲学思想的文章,不少于10000字。不要列目录,直接写具体的内容。 《禅与计算机程序设计艺术》/ By 禅与计算机程序设计艺术&GPT-4 文章目录 《禅与计算机程序设计艺术》/ By 禅与计算机程序设计艺术&G…

编程语言进化史《禅与计算机程序设计艺术》 / 陈光剑

编程语言概述 计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言。 编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的用途和不同的发展轨迹。编程语言并不像人类自然语…

《计算机程序设计艺术》系列书

《计算机程序设计艺术》重译自Donald E. Knuth(汉名高德纳)的三卷著作:"The Art of Computer Programming: 1. Fundamental Algorithms; 2. Seminumerical Algorithms; 3. Sorting and Searching";三卷中文名为《基本算法》、《半数值算法》及…

“风味人间”与计算机程序设计艺术《禅与计算机程序设计艺术》

来自“风味人间”的类比 所谓美食,不过是一次又一次的相逢。我们带您穿越山海之间,偶尔的落地生根,成就万千肴变,随即化作滚滚红尘,穿越香料歧路,几度江湖夜雨后,点亮万家灯火。 《风味人间》 浮华随风去,一菜一江湖。无论置身繁华闹市,还是身居乡野陋巷,世上的滋味,…

计算机程序设计艺术初读感

传奇 在计算机领域里,有这么一本神作:作者从20多岁还在读博士时就开始写,一直写到80多岁,写到现在这本书还没完结;为了排版这本书而顺便开发的排版系统推动了整个西文印刷行业的变革;比尔盖茨说&#xff1…

计算机程序设计艺术读后感,计算机程序设计艺术(第1卷)读后感1000字

《计算机程序设计艺术(第1卷)》是一本由[美] Donald E. Knuth著作,清华大学出版社出版的精装图书,本书定价:80.00元,页数:650,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。 《计算机程序设计艺术(第1卷)》精选点评: ●神书,但是我智力太捉急了。。。感…