组合测试

组合测试(Combinatorial Test)是一种黑盒测试用例生成方法,主要针对多输入参数组合场景。

目前业界较流行的两种组合测试方法,一种是Pairwise/All-Pairs,即配对组合。OATS(Orthogonal Array Testing Strategy),即正交表法。

Pairwise/All-Pairs

In computer science, all-pairs testing or pairwise testing is a combinatorial method of software testing that, for each pair of input parameters to a system (typically, a software algorithm), tests all possible discrete combinations of those parameters. Using carefully chosen test vectors, this can be done much faster than an exhaustive search of all combinations of all parameters, by “parallelizing” the tests of parameter pairs. — 维基百科

Pairwise/All-Pairs,也叫配对测试 或 结对测试,是一种软件测试的组合方法,核心在于用最少的测试用例来覆盖多个因素取值的两两组合。

配对测试示例

# 影响因素及可取值
操作系统: macOS, Windows, Linux
浏览器: Chrome, Safari, Firefox
分辨率: 1366x768, 1600×900, 2880x1800# 配对测试结果集
操作系统    浏览器 分辨率
Linux   Safari  1600×900
Windows Safari  1366x768
Linux   Firefox 2880x1800
Windows Chrome  2880x1800
Windows Firefox 1600×900
macOS   Safari  2880x1800
Linux   Chrome  1366x768
macOS   Chrome  1600×900
macOS   Firefox 1366x768

Pairwise 算法

Pairwise是 L. L. Thurstone 在 1927 年首先提出来的。他是美国的一位心理统计学家。Pairwise是基于数学统计和对传统的正交分析法进行优化后得到的产物。

Pairwise基于如下 2 个假设:

  • 每一个维度都是正交的,即每一个维度互相都没有交集;
  • 根据数学统计分析,73% 的缺陷(单因素是 35%,双因素是 38%)是由单因素或两个因素相互作用产生的。19% 的缺陷是由三个因素相互作用产生的。

因此,Pairwise基于覆盖所有两因素的交互作用产生的用例集合性价比最高而产生的。

N-wise

N-wise是对 N 个因素的所有取值进行全排列组合(笛卡尔积)而生成的一组测试用例集。理论上,该测试用例集可以发现所有 N 个因素共同作用引发的缺陷。

Pairwise/All-PairsN-wise的一个具体化实例,Pairwise/All-Pairs实际上就是 2-wise

《微软软件测试之道》中,建议从 Pairwise/All-Pairs开始测试,逐渐提高组合维度,直至6-wise组合测试。因为据研究表明,6-wise可以发现绝大多数的程序缺陷。但是,实际上随着组合维度的提升,测试用例呈指数爆炸增长,所以 Pairwise/All-Pairs3-wise比较适合实际项目。

组合数量对比

组合 全排列组合数量 All-Pairs 组合数量 3-wise 组合数量
2*2 4 4 -
3*3*3 27 9 27
4*4*4*4 256 20 78
4*4*4*4*3*3*3*2*2*2 55296 25 100

N-wise 与 OATS 的区别

相同点

  • 都属于组合测试方法
  • 都可减少测试成本
  • 使用频率较高的均是两两组合

不同点

  • N-wise:适用于多因素组合情况下的测试用例生成。

    • 仅考虑两两组合,故测试用例数量固定,但内容不一定一致(引入随机种子,可生成不同的测试用例,如 PICT 中的参数“/r[:N]”)
    • 相比正交表法,测试成本较低
    • 生成用例较方便,有相关工具支持,如 PICT、Allpair等
  • 正交表法:是为正交试验服务的,强调试验数据的均衡搭配。
    • 强调因素间取值组合的“等概率覆盖”
    • 受到“等概率覆盖”的约束,通常比配对测试生成的用例要多,测试成本较高
    • 生成用例较复杂,需要通过正交表进行裁剪、替换参数后才可生成用例

组合测试相关工具

Pairwise 工具集:http://www.pairwise.org/tools.asp
正交表查询:https://www.york.ac.uk/depts/maths/tables/orthogonal.htm

Pairwise工具推荐微软的 PICT(Pairwise Independent Combinatorial Testing)

参考文档

  • https://www.developsense.com/pairwiseTesting.html
  • https://en.wikipedia.org/wiki/All-pairs_testing
  • http://www.pairwise.org/

微信公众号:daodaotest

组合测试术语:Pairwise/All-Pairs、OATS(Orthogonal Array Testing Strategy)相关推荐

  1. 测试用例设计之一——Orthogonal Array Testing Strategy(OATS)

    1. 正交表的概念:http://blog.csdn.net/zeeslo/article/details/1289991

  2. Orthogonal Arrays(正交法测试)amp;Pairwise Testing (成对法测试)

    对于多输入参数组合类的测试方法目前业界流行两种方法,一种是OATS(Orthogonal Array Testing Strategy),即正交表法:另一种是Pairwise/All-Pairs Te ...

  3. 组合测试工具PICT的安装及使用

    组合测试工具PICT PICT简介 安装步骤 使用步骤 PICT简介 PICT工具就是在微软公司内部使用的一款成对组合的命令行生成工具,现在已经对外提供,可以在互联网上下载到· PICT 可以有效地按 ...

  4. 《JUnit实战(第2版)》—第2章2.4节用Suite来组合测试

    本节书摘来自异步社区<JUnit实战(第2版)>一书中的第2章2.4节用Suite来组合测试,作者[美]Petar Tahchiev , Felipe Leme , Vincent Mas ...

  5. pythonplot绘图xrd_一种简化的截面动量组合测试[PythonMATLAB]

    下面的例子来源书籍 策略比较简单,使用N只股票构建投资组合,计算每只股票的过去LookBack(参数)日的动量,并作标准化处理作为股票权重,持有Holding(参数)日,其中权重允许为负数,即允许做空 ...

  6. Boost:测试使用大小为0的类array <>特化

    Boost:测试使用大小为0的类array <>特化 实现功能 C++实现代码 实现功能 测试使用大小为0的类array <>特化 C++实现代码 #include <s ...

  7. LeetCode 532. K-diff Pairs in an Array

    题目: Given an array of integers and an integer k, you need to find the number of unique k-diff pairs ...

  8. C#LeetCode刷题之#532-数组中的K-diff数对(K-diff Pairs in an Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3716 访问. 给定一个整数数组和一个整数 k, 你需要在数组里找 ...

  9. 芯片测试术语 ,片内测试(BIST),ATE测试

    芯片测试分为如下几类: 1. WAT:Wafer AcceptanceTest,wafer level 的管芯或结构测试: 2. CP:chip probing,wafer level 的电路测试含功 ...

最新文章

  1. 去除linux控制台光标
  2. java camel from uri_java – 如何将Camel属性加载到Bean中?
  3. 在rancher服务器页面添加Host
  4. 深度之眼课程打卡-统计学习方法01
  5. ubuntu开启SSH服务和允许root远程SSH登录
  6. [原创]我的作品:我的迷宫小游戏Java版本
  7. CheckedComboBoxEdit 重置初始化值的方法
  8. visual studio 安装Entity framework失败
  9. 链表(Linked List)之单链表
  10. Node.js快速文件服务器(通过HTTP的静态文件)
  11. 计算机为什么找不到网络打印机,电脑找不到网络打印机怎么办
  12. 微信王者登录太多服务器怎样删除,使用微信登录游戏或其他app时,可以使用不同的个人信息登录 选项已满 怎么删除?如图...
  13. 用计算python两点之间的距离math_Python求两点之间的直线距离(2种实现方法)
  14. 云计算实训报告总结_实训报告心得体会(通用5篇)
  15. DR和BDR的选举,ospf数据包
  16. 求最小公倍数与最大公因数的三种算法
  17. Overvoltage category (过电压类别, 过电压等级)
  18. 联想ghost重装系统_联想电脑怎么重装系统的方法
  19. FPGA图像处理_中值滤波、均值滤波、极值滤波
  20. onkeyup输入框限制

热门文章

  1. ecshop2.72文件结构说明
  2. 零基础重庆自考本科行政管理难吗?
  3. linux下使用代理连接外网
  4. Mysql 报错:Incorrect string value: ‘\xE4\xBB\x98\xE6\xAC\xBE...‘ for column ‘product_pay_remark‘
  5. simple_bypass
  6. 寒假作业81-100题
  7. linux yum sbt,CentOS下安装SBT
  8. python协程处理多个文件_python:多任务(线程、进程、协程)
  9. MyEclipse2014下载地址
  10. fffffffffffff