1 引言

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

2 概念及原理

2.1 定义

正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验

思想:用部分试验来代替全面试验,通过对部分试验结果的分析,了解全面试验的情况。

全面试验:可以分析各因素的效应,交互作用,也可选出最优水平组合。但全面试验包含的水平组合数较多,工作量大,在有些情况下无法完成。

2.2 正交表

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

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

举个栗子:

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

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

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 的正交表,这时我们就需要根据如下原则确定使用的正交表:

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 转载请注明来源


↙↙↙阅读原文可查看相关链接,并与作者交流