"这个功能有5个参数,每个参数有3种取值,全部组合要测243次?" 这是许多测试工程师面对复杂系统时的真实困境。如何在有限的测试资源下保证覆盖率?正交法测试(Orthogonal Testing)正是解决这类问题的金钥匙。
一、什么是正交法测试?
正交法测试源于日本数学家田口玄一的实验设计理论,通过正交表(Orthogonal Array)科学选择测试用例,实现两个核心目标:
-
覆盖率最大化:确保所有参数的取值组合都被覆盖
-
用例最精简:相比全组合测试,可减少70%-90%的用例量
作为一种特殊的数学表格,正交表表示为 LN(km):
-
行数(N):测试用例总数
-
水平(k):每个参数的水平数(待取值数量)
-
因素(m):最多可容纳的参数个数()
二、常用正交表速查手册
1. 基础型正交表
正交表类型 | 用例数 | 最大参数数 | 参数取值数 | 适用场景 |
---|---|---|---|---|
L4(2³) | 4 | 3 | 2 | 简单功能验证 |
L8(2⁷) | 8 | 7 | 2 | 多开关参数测试 |
L9(3⁴) | 9 | 4 | 3 | 多状态组合测试 |
1.1 L4(2³) 正交表
-
结构:4行 × 3列(3个因素,每个因素2个水平)
-
适用场景:3个因素,每个因素2个水平的组合测试。
-
示例表:
用例编号 因素A 因素B 因素C 1 1 1 1 2 1 2 2 3 2 1 2 4 2 2 1
1.2 L8(2⁷) 正交表
结构:8次实验 × 7个二元因素
适用场景:多参数开关测试(如7个配置选项)
示例表(节选):
实验号 | A | B | C | D | E | F | G |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
4 | 1 | 2 | 2 | 2 | 2 | 1 | 1 |
... | ...(共8行) |
实际应用:
测试邮件客户端设置(7个二进制选项:SSL、自动下载图片、签名等)
1.3 L9(3⁴) 正交表
结构:9次实验 × 4个三元因素
适用场景:多状态参数组合(如高/中/低)
完整表:
实验号 | 因素A | 因素B | 因素C | 因素D |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 |
4 | 2 | 1 | 2 | 3 |
5 | 2 | 2 | 3 | 1 |
6 | 2 | 3 | 1 | 2 |
7 | 3 | 1 | 3 | 2 |
8 | 3 | 2 | 1 | 3 |
9 | 3 | 3 | 2 | 1 |
实际应用:
测试视频播放器的组合:
-
分辨率(1080p/720p/480p)
-
网络带宽(高/中/低)
-
编码格式(H.264/VP9/AV1)
-
字幕(开/关/自动)
2. 进阶正交表
-
L12(2¹¹):支持11个二元参数
-
L16(4⁵):支持5个四态参数
-
L27(3¹³):支持13个三态参数
2.1 L12(2¹¹) 正交表
结构:12次实验 × 11个二元因素
特点:适合超多开关参数的粗略筛选
示例(前5列):
实验号 | A | B | C | D | E | ... |
---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | ... |
2 | 1 | 1 | 1 | 2 | 2 | ... |
3 | 1 | 2 | 2 | 1 | 1 | ... |
... | ...(共12行) |
实际应用:
硬件设备的11个功能开关测试(如USB接口的电源管理、协议版本等)
2.2 L16(4⁵) 正交表
结构:16次实验 × 5个四元因素
适用场景:多级别参数组合
示例表(节选):
实验号 | 因素A | 因素B | 因素C | 因素D | 因素E |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 |
5 | 2 | 1 | 2 | 3 | 4 |
... | ...(共16行) |
实际应用:
测试电商促销活动的组合:
-
折扣力度(无/10%/20%/30%)
-
优惠券类型(满减/折扣/免邮/积分)
-
用户等级(普通/银卡/金卡/铂金)
2.3 L27(3¹³) 正交表
结构:27次实验 × 13个三元因素
特点:超大规模参数组合的精选测试
示例(前4列):
实验号 | A | B | C | D | ... |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | ... |
2 | 1 | 1 | 2 | 2 | ... |
3 | 1 | 1 | 3 | 3 | ... |
... | ...(共27行) |
实际应用:
物联网设备的多参数测试:
-
温度(低/中/高)
-
湿度(30%/60%/90%)
-
信号强度(弱/中/强)
-
等13个环境因素
三、5步实战教学(以登录功能为例)
测试需求:验证包含浏览器、网络环境、用户角色的登录功能
Step 1:确定测试维度
参数 | 取值 |
---|---|
浏览器 | Chrome, Firefox, Safari |
网络 | WiFi, 4G, 5G |
用户角色 | 普通用户, VIP用户, 管理员 |
Step 2:选择正交表
根据3个参数、每个3个取值,选择L9(3⁴)正交表(第四列可留空)
Step 3:建立映射关系
正交表值 → 实际取值: 1 → Chrome / WiFi / 普通用户 2 → Firefox / 4G / VIP用户 3 → Safari / 5G / 管理员
Step 4:生成测试矩阵
用例 | 浏览器 | 网络 | 用户角色 |
---|---|---|---|
1 | Chrome | WiFi | 普通用户 |
2 | Chrome | 4G | VIP用户 |
3 | Chrome | 5G | 管理员 |
4 | Firefox | WiFi | VIP用户 |
5 | Firefox | 4G | 管理员 |
6 | Firefox | 5G | 普通用户 |
7 | Safari | WiFi | 管理员 |
8 | Safari | 4G | 普通用户 |
9 | Safari | 5G | VIP用户 |
Step 5:补充关键组合
当发现某些高风险组合未被覆盖时(如Safari+5G+管理员),可额外追加测试用例