当前位置: 首页 > news >正文

测试设计方法:正交试验原理分析与实践

文章目录

    • 1、引言
    • 2、基本原理及定义
    • 3、正交表的分类
      • 3.1、标准正交表
      • 3.2、混合水平正交表
    • 4、正交试验设计步骤
    • 5、应用案例
      • 5.1 案例一:自助售货机
      • 5.2 案例一:自动化处理
        • 1)PICT自动化工具介绍
        • 2)自动化处理过程
      • 5.3 案例二:终端设备端口交互测试
        • 1)PICT约束基本规则
        • 2)自动化处理过程
    • 6、正交试验的优势和局限
      • 6.1 优势
      • 6.2 局限
    • 7、其他实用工具推荐
    • 8、拓展:加权正交试验
    • 9、附录
      • 9.1 常用正交表查阅表
      • 9.2 取得正交表的常用方法
    • 10、参考

1、引言

软件领域从上世纪60年代发展至今,开发技术不断地迭代,软件的复杂度也日趋复杂,质量保障地实践方法也在发生着变化。早期的黑盒测试,通过等价类划分、边界值分析、错误猜测等方法对程序功能进行分析,对黑盒测试的案例设计方法也在不断的探索,下面来介绍一种新的黑盒测试设计方法:正交试验。一种十分经典的设计方法,将统计学正交试验的思路结合到了测试设计的过程中,通过采用此方法,可以非常高效的提高案例的设计效率,十分方便。

2、基本原理及定义

正交试验,是一种基于统计学原理的黑盒测试方法,本质是利用正交表,来将各种因素进行均匀的搭配组合,来提高我们的测试场景整体的覆盖密度,确保我们每个独立的因素场景及它们之间的交互场景都能被充分的验证到。因为这一点,通过这一种方法,生成的测试案例的数量会相对少很多,减少了用例场景之间的冗余。也正因为这一点,可以在不影响整体测试效果下,大幅提升测试效率,并且测试的结果依然可靠。

正交试验包含下面三种基本要素:

  • 1、因素 (Factor)

    指代能够影响软件功能、性能、或配置一种独立的输入变量。例如自动售货机,交易时的支付方式、售卖物品都可视为独立因素。

  • 2、水平 (Level)

    表示独立因素下,所有可能的取值或状态。例如自动售货机,支付方式有支付宝、微信支付、数字货币、云闪付,这些都是支付方式这一因素的水平值。

  • 3、正交表 (Orthogonal Array)

    一种预设好的、用于安排多因素试验的标准化表格,也可称之为因子状态表,依据伽罗瓦理论(Galois Theory)生成。通常用 L n ( m k ) \ L_n(m^k)  Ln(mk)来表示:

    • L:代表正交表 (Latin Square)
    • n:代表正交表的行数,即试验的次数,对应最终生成的测试用例的数量
    • k:代表正交表的列数(栏数),表示最多可以安排的因素个数
    • m:表示每个因素所具有的水平数

    L n ( m k ) \ L_n(m^k)  Ln(mk)表示的是一个可研究k个因素,每个因素最多可具有m个水平值的需n次试验的正交试验。

3、正交表的分类

3.1、标准正交表

在研究的案例下,当所研究的所有因素都具有相同的水平值时,通过这种格式生成的正交表即为标准正交表,也称为单一水平正交表。

L 9 ( 3 4 ) L_9(3^4) L9(34)表示的就是一个需要进行9次试验的标准正交表,可以用来研究最多4个因素,每个因素有3个水平:

factor1: level_1, level_2, level_3
factor2: level_1, level_2, level_3
factor3: level_1, level_2, level_3
factor4: level_1, level_2, level_3

正交表示例:

用例factor1factor2factor3factor4
用例1level_1level_1level_1level_1
用例2level_1level_2level_3level_2
用例3level_1level_3level_2level_3
用例4level_2level_1level_3level_3
用例5level_2level_2level_2level_1
用例6level_2level_3level_1level_2
用例7level_3level_1level_2level_2
用例8level_3level_2level_1level_3
用例9level_3level_3level_3level_1

3.2、混合水平正交表

大多数情况下,问题涉及的因素水平数并不会相同,这种情况下采用混合水平正交表。像 L 6 ( 2 1 3 1 ) L_{6}(2^{1}\ 3^{1}) L6(21 31)表示的是一个需要6次试验的混合水平正交表,其中存在1个因素有2水平、1个因素有3水平。

factor1: level_1, level_2
factor2: level_1, level_2, level_3

正交表示例:

用例factor1factor2
用例1level_1level_1
用例2level_1level_2
用例3level_1level_3
用例4level_2level_1
用例5level_2level_2
用例6level_2level_3

总结:标准正交表的格式固定,生成的表可以查阅标准表,见附录[9.1 常用正交表查阅表](###9.1 常用正交表查阅表),其中也包含一部分常见的混合水平正交表可以查阅。

4、正交试验设计步骤

通过正交试验设计用例,简要分为下面四个步骤:

  • 第一步: 分析需求中涉及的所有的“因素”以及“水平”值。

  • 第二步: 选择合适的正交表,优先采用标准正交表。当因素水平不一致时采用混合水平正交表。

  • 第三步: 将“因素”以及“水平”根据正交表水平值映射到正交表。

  • 第四步: 根据完整正交表生成测试用例。

上面的四个步骤中,相对复杂的是对正交表的选用,下面通过具体案例进行探究。

5、应用案例

5.1 案例一:自助售货机

以上面提到的自助售货机为例,假设完整需求规格书如下:

某自助售货机,支持自助售卖饮品,售卖的产品有怡宝、农夫山泉、脉动,售货机支持的支付方式需要有:支付宝、微信支付、数字货币、云闪付并且在交易时,并且支持人民币、美元支付。售卖机投放的区域有两块,区域A、区域B。售卖规则按所属区域自主调控定价。设计针对自助售货机的售货功能测试。

1、分析需求中的“因素”和“水平”:

售卖物品:怡宝、农夫山泉、脉动 ———— 因素:售卖物品、水平值:3

支付方式:支付宝、微信支付、数字货币、云闪付 ———— 因素:支付方式、水平值:4

交易货币:人民币、美元 ———— 因素:交易货币、水平值:2

销售区域:区域A、区域B ———— 因素:销售区域、水平值:2

2、选择合适正交表:

这里很明显的是,四个因素,各自有不同的水平值,采用的是混合正交表 L 24 ( 2 2 3 1 4 1 ) L_{24}(2^{2}\ 3^{1}\ 4^{1}) L24(22 31 41),混合正交表处理方式有很多种,这里采用拆分2个小的正交表,再进行合并:

  • 拆分正交表1: L 2 ( 2 2 ) L_{2}(2^{2}) L2(22):处理的因素”交易货币“、”销售区域“。将此部分处理好整体作为1个因素A,此因素有2种结果。

针对”交易货币“、”销售区域“得到标准正交表:

交易货币销售区域
人民币区域 B
美元区域 A
  • 拆分正交表2: L 12 ( 3 1 4 1 ) L_{12}(3^{1}\ 4^{1}) L12(31 41):剩余2个因素待处理,最大水平为4,直接进行正交组合得到12个试验,再补全关联因素A,以标准正交表来进行处理得到如下:
试验序号售卖物品支付方式因素A
1怡宝支付宝1
2怡宝微信支付1
3怡宝数字货币1
4怡宝云闪付1
5农夫山泉支付宝1
6农夫山泉微信支付1
7农夫山泉数字货币1
8农夫山泉云闪付1
9脉动支付宝1
10脉动微信支付1
11脉动数字货币1
12脉动云闪付1

3、处理子正交表: 将拆分表1和表2正交合并,并将”因素“和”水平“映射到正交表,最终生成的正交表如下:

试验序号售卖物品支付方式交易货币销售区域
1怡宝支付宝人民币区域 A
2怡宝微信支付人民币区域 B
3怡宝数字货币美元区域 A
4怡宝云闪付美元区域 B
5农夫山泉支付宝人民币区域 B
6农夫山泉微信支付人民币区域 A
7农夫山泉数字货币美元区域 B
8农夫山泉云闪付美元区域 A
9脉动支付宝美元区域 A
10脉动微信支付美元区域 B
11脉动数字货币人民币区域 A
12脉动云闪付人民币区域 B
13怡宝支付宝美元区域 B
14怡宝微信支付美元区域 A
15怡宝数字货币人民币区域 B
16怡宝云闪付人民币区域 A
17农夫山泉支付宝美元区域 A
18农夫山泉微信支付美元区域 B
19农夫山泉数字货币人民币区域 A
20农夫山泉云闪付人民币区域 B
21脉动支付宝人民币区域 B
22脉动微信支付人民币区域 A
23脉动数字货币美元区域 B
24脉动云闪付美元区域 A

4、将正交表输出到完整测试用例,每一行输出到一个测试用例。

以此,每一行试验项,为一个测试用例,最终得到完整的24个测试用例。四个因素,在不使用正交试验的情况下,总共会产生 3 × 4 × 2 × 2 = 48 3\times4\times2\times2=48 3×4×2×2=48个测试案例。采用正交试验后对比减少50%的用例数量。针对混合水平的处理,有许多不同的处理思路,不同的处理方式下,得到的最终正交表的规格会有差异。具体方法思路参考附录:[9.2 取得正交表的常用方法](###9.2 取得正交表的常用方法)

5.2 案例一:自动化处理

1)PICT自动化工具介绍

PICT (Pairwise Independent Combinatorial Testing tool):微软开发的一款免费开源工具,用于正交表生成的命令行工具,支持自定义因素、水平及因素间约束关系,甚至可针对因素配置自定义权重,生成高效的成对测试用例集,广泛应用于组合测试。

基本命令语法:

pict sample.txt > sample.xls [options]
  • sample.txt:包含所有的因素水平等内容,因素后“:”跟接各水平值,逗号相隔,因素水平默认不区分大小写。示例:
因素A: a1, a2, a3
因素B: b1, b2, b3, b4, b5
  • sample.xls:生成的正交表,仅支持xls格式。
  • [options]:可选项,详细如下:
❯ pict
Pairwise Independent Combinatorial TestingUsage: pict model [options]Options:/o:N|max - Order of combinations (default: 2)  # 设置测试组合的阶数/d:C     - Separator for values  (default: ,)  # 设置输出文件中值的分隔符/a:C     - Separator for aliases (default: |)  # 设置值别名的分隔符/n:C     - Negative value prefix (default: ~)  # 设置约束条件中表示否定的前缀/e:file  - File with seeding rows              # 指定包含预定义测试用例的文件/r[:N]   - Randomize generation, N - seed      # 随机生成测试用例[- 不带参数:使用当前时间作为种子;- N:指定随机种子]/c       - Case-sensitive model evaluation     # 在评估模型时区分大小写,默认不区分/s       - Show model statistics				# 显示模型统计和生成的测试用例统计
2)自动化处理过程

按照pict规则,将案例1因素和水平处理后如下:

售卖物品: 怡宝,农夫山泉,脉动
支付方式: 支付宝,微信支付,数字货币,云闪付
交易货币: 人民币,美元
销售区域: 区域A,区域B

保存到sample3.txt,将其生成正交表:

pict sample3.txt > sample3.xls

得到完整的正交表如下:

试验序号售卖物品支付方式交易货币销售区域
1怡宝微信支付人民币区域B
2怡宝数字货币美元区域A
3农夫山泉数字货币美元区域B
4农夫山泉微信支付人民币区域A
5怡宝云闪付美元区域B
6农夫山泉支付宝人民币区域A
7脉动云闪付人民币区域A
8怡宝支付宝美元区域B
9农夫山泉云闪付人民币区域A
10脉动数字货币美元区域B
11脉动支付宝人民币区域A
12脉动微信支付美元区域B
13农夫山泉数字货币人民币区域A

工具生成的结果相比于上述手动处理结果更加精简,对交易货币和销售区域进行了进一步精简交叉。之后将处理得到的正交表转为用例即可。

5.3 案例二:终端设备端口交互测试

1)PICT约束基本规则

基本符号:

操作符类型操作符说明
关系操作符=等于
<>不等于
<小于
>大于
<=小于等于
>=大于等于
逻辑操作符and
or
not
xor异或
集合操作符in属于某个集合
not in不属于某个集合

基本语法:

# 如果 ParameterA 等于 ValueA 则 ParameterB 要求等于 ValueB
if [ParameterA] = "ValueA" then [ParameterB] = "ValueB";
# 如果 ParameterA 等于 ValueA 则 ParameterB 要求不等于 ValueB
if [ParameterA] = "ValueA" then [ParameterB] <> "ValueB";
# 如果 ParameterA 等于 ValueA 且 ParameterB 等于 ValueB 则 ParameterC 等于 ValueC 
if [ParameterA] = "ValueA" and [ParameterB] = "ValueB" then [ParameterC] = "ValueC";
2)自动化处理过程

完整需求如下:

有一款终端设备,有3个端口,分别为A、B、C,端口A支持接入PC、适配器、OTG、上位机,端口B与端口A相同支持4种设备接入,端口C为专用接口,用来连接终端底座,拓展其他外设。端口C与端口B存在物理上互斥,无法同时接入。分析端口的测试场景。

对其多端口场景进行分析,得到的因素和水平分别如下:

1、分析“因素”及所有可能的“水平”值: 可充分考虑同时接入3、2、1端口的场景

A端口: PC、适配器、OTG、上位机、空闲 ———— 因素:A端口、水平值:5
B端口: PC、适配器、OTG、上位机、空闲 ———— 因素:B端口、水平值:5
C端口: 底座、空闲 ———— 因素:C端口、水平值:2

由于B端口与C端口物理互斥,存在约束条件:

  • 长边B端口:接入 -> C端口:无法接入(反之亦然)

2、生成正交表:

直接使用PICT工具,将约束条件及因素和水平值整理得到如下初始表单:

# Sample
A端口: PC,适配器,OTG,上位机,空闲
B端口: PC,适配器,OTG,上位机,空闲
C端口: 底座,空闲# 约束条件:如果B接入外设,则C必须为空
if [B端口] <> "空闲" then [C端口] = "空闲";

使用工具直接生成:

pict demo.txt > demo.xls

输出正交表如下:

试验序号A端口B端口C端口
1上位机OTG空闲
2适配器上位机空闲
3空闲适配器空闲
4PC空闲底座
5空闲上位机空闲
6PC适配器空闲
7PCPC空闲
8OTG上位机空闲
9OTG适配器空闲
10PCOTG空闲
11上位机PC空闲
12空闲空闲底座
13空闲OTG空闲
14适配器PC空闲
15上位机上位机空闲
16适配器空闲底座
17OTGPC空闲
18PC上位机空闲
19适配器OTG空闲
20空闲PC空闲
21OTGOTG空闲
22上位机空闲底座
23适配器适配器空闲
24OTG空闲底座
25OTG空闲空闲
26上位机适配器空闲

4、根据正交表输出测试用例

上面的例子下,原始用例数量为, 5 × 5 × 2 = 50 5\times5\times2=50 5×5×2=50条用例,用例数量可以看出,减少了24条的用例量。这两个例子下,在使用正交试验法设计用例时,均能够在保证一定覆盖率的前提下,大幅缩减测试用例的数量,提高测试设计的效率。

6、正交试验的优势和局限

6.1 优势

优势描述
高效性可有效减少测试用例的总数,提高测试效率。因素水平越复杂的场景效果越明显。
均匀覆盖率元素水平均匀覆盖,保证每对因素水平组合至少被测试一次,确保了测试的覆盖面。
系统性提供了一套系统化的方法来输出测试用例,避免主观随意性,防止场景遗漏。
易操作性过程相对简单,一旦理解了原理,便可借助现有的正交表或工具,快速设计用例。

6.2 局限

局限性描述
不适用强交互因素场景对因素的独立性要求高,当因素间有强交互作用时,正交实验处理的效果会大打折扣,结果准确性也更差,不适宜采用正交实验进行处理。
边界与异常覆盖不足正交实验关注的是整体覆盖均匀,对于单个因素的边界值或异常值的关注不足,需结合其他方法(如边界值分析)处理。
因素水平不同时处理相对复杂当不同因素的水平数不同时,需要使用混合水平正交表,选择和使用混合水平正交表相对复杂,增加了测试设计的难度。
特定组合的遗漏正交试验本质上确保各因素水平两两组合,但不是所有可能的组合都会出现,可能遗漏业务逻辑上重要的特定组合,对于生成的组合需结合业务场景审查。

7、其他实用工具推荐

对于正交表的生成,除PICT外,还有下面的一些实用工具:

  • 在线正交表生成器:chemtools.cn提供的一款免费在线工具,可以直接根据因素和水平值生成正交表。

  • allpairs:python工具库,用于直接生成all-pairs(pairwise)测试组合,开源免费。

  • Minitab:一款适用于各水平的统计学工具,功能强大,支持生成各类标准正交表及混合水平正交表,但需付费。

    应用中“统计->DOE->田口->创建田口设计”:田口设计即为正交试验

田口试验

生成正交表示例:

标准正交

8、拓展:加权正交试验

在进行正交试验时,有时部分因素的重要程度比较高,比如一个网页的兼容性,客户的主要群体假设是程序员,则依据市场占有率以及客户群体本身,chrome浏览器的占比就相对较高。则在网络应用的正交案例中,chrome这一项因素水平就可以将其权重提高,针对正交试验中的各因素水平进行加权,在进行因素组合时,根据不同权重决定组合中因素的优先采用:

通过PICT工具可以直接实现自定义因素水平的权重:

# 示例:Chrome权重定义为10,windows权重定义为7,1920×1080权重定义为2
浏览器:Chrome(10), Firefox, Edge, Safari, Opera
操作系统:Windows(7) , MacOS
分辨率:1920×1080(2), 1366× 768

其他所有的未指明的水平,权重都为1,在确定因素水平权重之后,直接进行正交表生成即可。

注: 权重仅在不影响整体因素覆盖标准时,才会根据权重确定最终结果,且权重值必须为正整数。

更多详情参考:https://github.com/Microsoft/pict/blob/main/doc/pict.md

9、附录

9.1 常用正交表查阅表

SSPSAU提供的10水平以下常用正交表查阅,包含标准正交表和混合水平正交表: SPSSAU正交表手册2020版.xlsx

image-20250623161543768

9.2 取得正交表的常用方法

获取方法适用类型描述优势局限性推荐程度
专业正交表软件标准/混合使用SPSS Orthogonal Design、OrthArray、PICT等专门工具功能专注,针对性强可能需要专业知识,部分软件收费⭐⭐⭐⭐⭐
统计软件生成标准/混合使用Minitab、SAS、JMP、Design Expert等统计软件自动生成操作简便,可视化强,支持分析部分软件收费,学习成本相对高一些⭐⭐⭐⭐⭐
标准正交表手册标准使用已发表的标准正交表集合,如 L 4 ( 2 3 ) L_4(2^3) L4(23) L 8 ( 2 7 ) L_8(2^7) L8(27) L 9 ( 3 4 ) L_9(3^4) L9(34)方便快捷,可靠性高仅限于常见规格的标准正交表⭐⭐⭐⭐
在线正交表生成器标准/混合使用网站如STATEASE、正交设计助手等无需安装,随时可用功能可能受限,稳定性不确定⭐⭐⭐⭐
编程自动生成标准/混合使用R、Python等编程语言实现算法生成高度自定义,可批量生成需编程能力,算法复杂⭐⭐⭐⭐
泰格奇正交表集标准/混合使用田口玄一编制的正交表集合工业实践验证,配套分析方法特定领域针对性,选择有限⭐⭐⭐⭐
交互作用设计法标准/混合考虑因素交互作用影响的设计方法可分析因素间相互作用设计复杂度增加,运行次数增多⭐⭐⭐⭐
Excel模板工具标准使用预设Excel模板选择和生成正交表广泛可用,易于操作功能有限,大规模设计不适用⭐⭐⭐⭐
表格查询法标准根据因素数和水平数,查询标准正交表目录简单直接,无需软件只适用于标准正交表⭐⭐⭐
混合水平转换法混合从标准正交表转换,如将3水平转为2水平利用已有正交表资源可能导致正交性下降⭐⭐⭐
替换法混合用多个低水平因素替换一个高水平因素操作相对简单需注意替换规则,保持正交性⭐⭐⭐
缩减法标准/混合从大规模正交表删除列或合并行得到灵活性强需确保删减后仍保持正交性⭐⭐⭐
基本正交表构造法标准基于GF(q)伽罗华域或其他数学方法构造适用于特定结构正交表需要数学背景,复杂度高⭐⭐
拼接法混合将多个正交表按规则拼接成更大的正交表可构造大规模正交表技术要求高,易出错⭐⭐
正交拉丁方阵变换标准基于拉丁方阵变换构造正交表数学基础扎实仅适用于特定结构⭐⭐

10、参考

https://baike.baidu.com/item/%E6%AD%A3%E4%BA%A4%E8%A1%A8/948850
https://spssau.com/helps/medicalmethod/orthogonal.html
https://testerhome.com/articles/16837

相关文章:

  • Maven 之 JUnit 测试体系构建全解析
  • JS 大整数相加
  • Matlab自学笔记六十:符号表达式的缩写和简化
  • VitePress搭建静态博客
  • 一文汇总电子电气架构的成本优化方向
  • 关于华为Pura70Pro+升级鸿蒙NEXT和回退
  • 艾立泰数字化重塑汽车零部件包装租赁行业
  • Chromium 136 编译指南 macOS篇:编译优化技巧(六)
  • 【Linux学习笔记】进程间通信之共享内存
  • C# SolidWorks二次开发-实战2,解决SolidWorks2024转step文件名乱码问题
  • 从二维到三维:ArcGIS Pro与Aerialod联合制作三维人口密度分布图
  • Vue2 day04
  • xlsx-style 插件批量导出多个sheet表格excel中遇到的问题及解决
  • 微服务链路追踪在生产环境问题定位中的实战经验
  • Windows电脑数据恢复终极指南:从原理到实战
  • 七层网络模型与电脑通信比喻
  • 基于 Docker 的服务部署探索(Day 2)
  • 从语言到生态:编程语言在各行业的应用格局与未来演进
  • 编程语言的设计之道:从底层控制到表达自由
  • SPL 实践系列:跨库移植 SQL
  • 辽宁网站备案/百度关键词价格排行榜
  • 校园网站策划书/如何做企业网站
  • 简阳建设网站公司/十大室内设计网站
  • 网站建设部门的职责/网站技术制作
  • 北京海淀区房价2022最新价格/seo培训学校
  • 厦门网站制作方案/百度搜索风云榜