【测试算法】深入浅出Pairwise 算法
深入浅出Pairwise 算法
作者:王勇
软件测试是软件开发中很重要的一环,在软件成本中也占着很大的比重。本文在介绍pairwise算法的基础上,提出了针对某一类问题的扩展算法并加以实现。
本文的组织结构如下:
第一, 本文首先简要介绍一下测试界中的著名的pairwise算法(约占文章的50%)。
第二, 然后提出了一种对pairwise算法的扩展算法(扩展算法更适合用于测试某一类场合)。
第三, 最后,基于扩展算法,使用java语言开发出测试用例生成工具jCase。
目录
1 软件测试...3
2 pairwise算法...3
2.1 pairwise算法详解...4
2.2 Pairwise算法的效率...6
2.3 pairwise算法的比较...6
3 Pairwise扩展算法...7
3.1 Pairwise维度...7
3.2 Pairwise算法中重要维度算法...8
4 Pairwise程序...9
5 Pairwise的不足...10
1 软件测试
软件测试分为黑盒测试和白盒测试。Pairwise算法就是针对软件测试中的黑盒测试提出来的一个行之有效的测试方法。
2 pairwise算法
(2)根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的。19%的缺陷是由3个因子相互作用产生的。
因此,pairwise基于覆盖所有2因子的交互作用产生的用例集合性价比最高而产生的。
2.1 pairwise算法详解
操作平台:W(windows),L(linux),i(ios)
使用pairwise算法,有多少个测试case?具体是什么case?
如果不用pairwise算法,我们需要 3*3*2=18个测试case。下面是具体的case:
一共有18个,很繁琐。但是这是100%的测试覆盖率,缺陷率也是100%。
现在我们从上面开始重新做一次。1号是MWC,两两组合是MW MC WC 都出现过,去掉。
这样也是剩下9个测试case,但是具体的case内容不一样。经过L. L. Thurstone证明,pairwise算法最终剩下的测试case个数肯定相同,但是可以有不同的case组合。
2.2 Pairwise算法的效率
Pairwise算法和正交分析法进行比较,当有3个维度,每个维度有4个因子的时候:
2.3 pairwise算法的比较
Pairwise算法和单因素测试用例设计的比较,能够覆盖到两个维度的正交组合设计。能适当减少遗漏的测试。
Pairwise算法和全正交设计法的比较,全正交设计法,测试case太多,投入的成本太大。Pairwise算法在数学统计分析的基础上,对传统的全正交设计法进行了优化,适当的提高了效率。
3 Pairwise扩展算法
项目名称 |
项目组 |
维度个数 |
备注 |
xxx1 |
张组 |
3 |
平台,机器,软件版本 |
xxx2 |
张组 |
4 |
Ip和域名,udp,后缀表 |
xxx3 |
齐组 |
2 |
Ip黑白名单,域名黑白名单 |
xxx4 |
周 |
3 |
注册商,ip和域名 |
可以看出,每一个项目的维度都保持在5个以下,并且有重要维度和一般维度的区分。根据这2个特点,提出了pairwise的扩展算法。
3.1 Pairwise维度
XXXX的各类项目维度都不多,并且每个维度的因子也不太多。测试人员可以很好的把握测试维度,难度不高。适合pairwise算法。
3.2 Pairwise算法中重要维度算法
在一般维度方面,重要性是平均的,所以在维度1上,是一个平面,它和维度2(平面),相交,是一条线,具体到因子,就是一个点。所以我们找到了一组case。
综上所述,重要维度方面要适当增加测试case。具体怎么加见如下方法:
1, 按照输入维度的顺序全排列测试case。(输入维度的顺序代表重要性从高到底)
2, 从第一个开始往下使用pairwise算法过滤case。
3, 从最后一个开始往上使用pairwise算法过滤case。
4, 找出以上2组中相同case的数量,就是要增加的case的数量。
5, 增加的case是步骤4中相同的case的,变换维度1和维度2生成的case。
4 Pairwise程序
现有很多程序都是围绕pairwise算法产生的,最著名的就是ReduceArray;SmartDesgin 和微软的PICT。
按照pairwise扩展算法开发了一个jCase程序,部署在http://xxxxx.cn/ 上的测试工具库中。基本理论如第3小节所述。
3, 判断这个case中两两因子组合是否在上面出现过,如果出现一个就删除掉。全部都没出现过,就保留这个case。
private booleanjudge(String[] tpm, HashMap copyresult) {
for(int i=0; i<tpm.length; i++)
str= str.substring(0,str.length()-1);
for (int i = 0; i < len; i++){
for (int j = i + 1; j < len;j++) {
for (int k = 0; k < len; k++){
Stringss = java.util.Arrays.asList(st).toString();
ss= ss.replaceAll("\\[","").replaceAll("\\]","");
for (int i = 0; i < r.size();i++) {
Iteratoriter = copyresult.entrySet().iterator();
Map.Entryentry = (Map.Entry) iter.next();
Stringt = (String)entry.getKey();
5 Pairwise的不足
(1)Pairwise对于维度的分解来说,需要对业务很熟悉。以及需要正交测试法的理论支持。需要中等专业的测试人员才能完成。
(2)pairwise还是有一定的遗漏。相比于全正交设计法来说,pairwise算法对于多于2个因素相互作用所产生的bug,没有覆盖到。
转自:http://blog.csdn.net/aassddff261/article/details/42776543
【测试算法】深入浅出Pairwise 算法相关推荐
- 深入浅出Pairwise 算法
深入浅出Pairwise 算法 作者:王勇 软件测试是软件开发中很重要的一环,在软件成本中也占着很大的比重.本文在介绍pairwise算法的基础上,提出了针对某一类问题的扩展算法并加以实现. 本文的组 ...
- 深入浅出 pairwise 算法
深入浅出Pairwise 算法 作者:王勇 软件测试是软件开发中很重要的一环,在软件成本中也占着很大的比重.本文在介绍pairwise算法的基础上,提出了针对某一类问题的扩展算法并加以实现. 本文的组 ...
- 软件测试用例设计之Pairwise算法
Pairwise算法简介 Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出来的.他是美国的一位心理统计学家.Pair ...
- 深入浅出K-Means算法
深入浅出K-Means算法 摘要:在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 在数据挖掘中 ...
- Problem E: 深入浅出学算法019-求n的阶乘
Problem E: 深入浅出学算法019-求n的阶乘 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 5077 Solved: 3148 Descri ...
- 深入浅出学算法007-统计求和
4006: 深入浅出学算法007-统计求和 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 4335 Solved: 2014 Description 求含 ...
- 1325: 深入浅出学算法020-阶乘和(sum)
1325: 深入浅出学算法020-阶乘和(sum) 欢迎使用Markdown编辑器 #include<bits/stdc++.h> using namespace std; int b[3 ...
- 视频测试基础知识--视频算法DMOS和PPSNR--视频参考与无参考测试介绍
视频测试基础知识--视频算法DMOS--视频参考与无参考测试介绍 测试则从传统的静态.单帧像分析,转换为动态测试.图像质量分析. 虽然单帧像分析可提供信号定时.色深.线条同步化,以及更多有用信息,但压 ...
- SigAI——深入浅出聚类算法
导言 聚类问题是机器学习中无监督学习的典型代表,在数据分析.模式识别的很多实际问题中得到了应用.在本文中,将为大家深入浅出的介绍聚类问题的定义以及各种典型的聚类算法,帮助大家建立对聚类算法最直观的.本 ...
最新文章
- 怎么学python-如何系统的学习python?
- Python代码:数字图像处理(DIP)7.1.1图像金字塔example7.1
- boost::phoenix模块使用 istreambuf_iterator 测试 lambda 函数对象
- v 3437 powered by ipb_奔驰V系改装订制版 目前最安全的商务车_凤凰网汽车
- 嵌入式ctags跳转和全局打印日志
- HCIE-RS面试--STP故障及处置
- 深入体验java项目开发 pdf,深入体验Java Web项目开发.pdf
- directX9SDK中提取的9个DLL文件
- 离线版的百度地图 js
- 主成分分析法(PCA方法)计算OBB包围盒
- 信息系统集成监理费收取标准_关于发布《信息系统工程监理及相关信息技术经验咨询服务取费计算办法(参照标准)》的通知...
- 2021Q2产品团队绩效总结--管理日记
- 计算机物联网知识,什么是物联网,关于物联网的小知识
- 基于帕累托的多目标遗传算法优化的原理与 Python 实现
- 开发微信小程序入门教程,含破解工具
- 解读视联网发展阶段之成年篇
- python pymysql连接池_杂项之pymysql连接池
- HTML5中如何显示视频HTML5视频播放
- 微信开发者工具更换存储目录将C盘数据User Data迁移到D盘
- 软考__第17章 战略管理