测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

京东云开发者
• 阅读 306

1 引言

上篇讲了因果图和判定表法,而这两种方法在变量值很多、排列组合数量极大的场景下,会生成非常庞大且冗余的测试用例,此时我们很难对所有组合场景进行全量测试用例覆盖,基于此短板,正交试验法应运而生。

2 概念及原理

2.1 定义

正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验
思想:用部分试验来代替全面试验,通过对部分试验结果的分析,了解全面试验的情况。
全面试验:可以分析各因素的效应,交互作用,也可选出最优水平组合。但全面试验包含的水平组合数较多,工作量大,在有些情况下无法完成。

2.2 正交表

使用正交试验法设计测试用例的核心在于正交表的选取,正交表是一整套规则的设计表格,一般表示为:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

其中,L代表是正交表,n代表正交表的行数(即测试用例数),k代表因素的个数或正交表的列数(即输入条件的个数),m表示每个因素的水平数,且有n=k*(m-1)+1

  • 因素(Factors) 表示在一项试验中,需要观察的变量
  • 水平数(Levels) 表示在试验范围内,任何单个因素能够取得的值得最大个数(变量的取值)

举个栗子:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

正交表必须满足以下两个特点,有一条不满足,就不是正交表:

  • 每列中不同属性值出现的次数相等。
    这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其它因素水平的干扰,能有效地比较试验结果并找出最优的试验条件
  • 在任意2列横向组成的属性值对中,每种属性值对出现的次数相等。
    这个特点保证了试验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性

这也是正交表的两大优越性,即“均匀分散性,整齐可比”。通俗的说,每个因素的每个水平与另一个因素各水平各碰一次,这就是正交性。

3 方法步骤

3.1 整体流程

1.确定因素(变量)和每个因素的水平数(变量取值);
2.根据因素数和水平数确定n值,这里区分2种情况:

单一水平正交表(各因素的水平数相同)

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

混合水平正交表,即各因素的水平数不完全相同的正交表

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

3.选择合适的正交表;
4.根据正交表把变量的值映射到表中,每一行的各因素的取值组合作为一个测试用例。

3.2 选择正交表

1.查Dr. Genichi Taguchi 设计的正交表:Dr. Genichi Taguchi 正交表https://www.york.ac.uk/depts/maths/tables/orthogonal.htm
2.SAS标准技术支持:SAS设计正交表http://support.sas.com/techsup/technote/ts723_Designs.txt

查找时需要关注不同类型的正交表,区分以下2种情况:

1.单一水平正交表:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

2.混合水平正交表:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

当有2个或2个以上正交表可以被选择时,选取原则是:选试验次数最少的那个正交表。

4 举个栗子

场景:对支持4种特殊场景的破损类异常三级类型的报备功能进行测试
异常三级类型 = 外包装破损,商品腐坏,外包完好内物破损/泄漏
特殊场景 = 打包不规范,违规揽收,集包封签异常,车辆封签异常
上传方式 = 单条上报,批量上传

4.1 传统方法:全量覆盖

  1. 分析上述测试需求,根据规格描述有:
    异常三级类型(外包装破损,商品腐坏,外包完好内物破损/泄漏)
    特殊场景(打包不规范,违规揽收,集包封签异常,车辆封签异常)
    上传方式(单条上报,批量上传)
    因此有3个被测元素(因素),每个因素分别有3、4、2个取值。
  2. 针对所有因素的全部水平值进行全排列,测试用例个数:3_4_2=24,具体用例如下:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

4.2 正交试验法设计用例

1.根据因素数和水平数确定n值:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

2.选择合适的正交表。根据计算得出n=6,在 Dr. Genichi Taguchi 正交表 查找发现不存在n=6的正交表,这时我们就需要根据如下原则确定使用的正交表:

  • 查找同时满足 n>6 && m>=max(m1=3,m2=4,m3=2) && k>=k1+k2+k3=1+1+1=3的正交表;
  • 当有2个或2个以上正交表可以被选择时,选择试验次数最少的那个正交表,本次选取L16b。

3.将各因素水平值填入映射表,每一行转换成一个测试用例,测试用例数量:12个,可以看到,比全量覆盖方法得到的用例数减少了50%。

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

4.3 PICT生成正交试验测试用例

虽然使用正交试验法可以帮助我们筛选合适的测试用例,提升测试效率,但选择正交表并输出测试用例的过程却需要耗费一定的时间,那么有没有更加快捷的方法呢?

当然有!PICT这个小工具只需要我们提供所有的因素及变量值,它就可以帮助我们自动生成正交试验的测试用例了,接下来让我们学习一下如何使用PICT生成测试用例吧!

在使用PICT直接生成测试用例之前,需要先准备需要生成测试用例的txt文件,这个txt文件必须放在安装目录的同一个文件夹下,否则没有作用。

本次建立了一个名称test_pict.txt的文件,在文件中输入所有的因素及变量值,每一行是一个因素及其对应的所有变量值枚举,因素名称与变量值枚举之间用 “:” 连接,各变量值之间用“,”连接,均为英文符号,无空格,如:

  • 异常三级类型:外包装破损,商品腐坏,外包完好内物破损/泄漏
  • 特殊场景:打包不规范,违规揽收,集包封签异常,车辆封签异常
  • 上传方式:单条上报,批量上传

注意编码格式是ANSI,否则会乱码(可以使用Notepad++改变编码格式),如下图:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

下面就开始准备测试用例的生成了,打开DOS窗口;

首先把目录切换到pict安装目录,本次为C:\Users\chenyuting50\Downloads,使用该命令:

pict test_pict.txt 即可自动生成测试用例,如下图:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

接下来需要执行:pict test_pict.txt >text_pict.xls命令,将测试用例保存到text_pict.xls文件中,该文件仍会存放在安装目录下,打开该文件内容如下,每行数据即为一条测试用例:

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

5 总结

测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队

但正交试验法并不适用于强流程性需求的测试用例设计,这些场景我们就需要借助功能图法或场景法来进行测试用例的设计,这些方法又该怎样使用呢?

作者:京东物流 陈雨婷

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
Testlink导入测试用例 附:Excel转换XML工具
TestLink是基于web的测试用例管理系统,主要功能是测试用例的创建、管理和执行,还提供简单的统计功能。通常情况下,我们都习惯于在Excel表中编写测试用例,写完之后经过用例评审,修改调整并汇总形成最终版的测试用例,再批量导入到Testlink系统。一、根据《导入测试用例模板.xlsx》编写测试用例,如下图所示:!(https://im
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
精准测试之过程与实践 | 京东云技术团队
精准测试是一套计算机测试辅助分析系统。精准测试的核心组件包含的软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统,这些功能完整的构成了精准测试技术体系。
京东云开发者 京东云开发者
11个月前
测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探 | 京东物流技术团队
1背景及问题G.J.Myers在中提出:测试是为了寻找错误而运行程序的过程,一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试,一个成功的测试是揭示了迄今为止尚未发现的错误的测试。对于新手来说,日常测试用例设计时,很少用到系统的方法论,大多是根据产
京东云开发者 京东云开发者
11个月前
测试用例设计方法六脉神剑——第二剑:招式组合,因果判定出世 | 京东物流技术团队
1引言上篇讲了等价类划分和边界值分析法,而这两种方法只考虑了单个的输入条件,并未考虑输入条件的各种组合、输入条件之间的相互制约关系的场景。基于此短板,因果图法和判定表法应运而生。2因果图法2.1概念及原理2.1.1定义一种描述输入条件的组合以及每种组合对应
京东云开发者 京东云开发者
11个月前
测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵| 京东物流技术团队
1引言前面几篇文章为我们讲述了因果图、判定表、正交试验等几种方法,主要是针对于不同条件输入输出的组合进行测试,但在实际需求中,我们也常会遇到需要对被测对象的状态流转进行验证的情况,此时前面几种方法将不再适用,对于这种状态转换类问题,功能图法则可大展身手。2
京东云开发者 京东云开发者
11个月前
测试用例设计方法六脉神剑——第五剑:化气为型,场景用例破云 | 京东物流技术团队
当拿到一个测试任务时,并非先关注某个功能的细节测试,而是先要使用场景法对主要业务流程和主要功能展开测试,当业务场景没有问题后,再使用等价类、边界值、判定表等方法对细节功能进行测试(先整体后细节)。
京东云开发者 京东云开发者
11个月前
测试用例设计方法六脉神剑——第六剑:心法至简,百家之长集成
1引言在前面几篇文章中,为大家介绍的都是系统的方法论,但在实际需求测试的过程当中,受到外部环境及业务逻辑的影响,比如涉及多需求耦合、浏览器缓存堆积等情况,仅针对当前需求设计出的测试用例就会有覆盖不全的问题,此时就需要借助以往的经验进行反向错误推测,辅助其他
API 小达人 API 小达人
11个月前
自动化测试|Eolink Apikit 如何保存、使用测试用例
测试用例是测试过程中很重要的一类文档,它是测试工作的核心,是一组在测试时输入和输出的标准,是软件需求的具体对照。测试用例可以帮助测试人员理清测试思路,确保测试覆盖率,发现需求漏洞,提高软件质量,提高测试效率,降低测试成本。EolinkApikit的API管理应用中,测试用例管理涉及到两个场景:单接口测试用例管理和多接口测试用例批量测试。
京东云开发者 京东云开发者
4个月前
研发视角浅谈R2流量回放测试
一、背景测试小伙伴们在2023年保障了团队线上系统0问题,这简直就是一项了不起的壮举!这得益于咱们测试组同事对工作的细致投入、风险把控、以及严格遵循流程规范进行测试用例评审、自动化建设、联调推动、回归验证、常态化压测、大促高保真压测、引流回放等多重保险策略