正交试验法
概述
正交试验设计方法(Orthogonal Experimental Design)是依据Galois理论,从大量的(试验)数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学试验设计方法。
有代表性的点是指具备”均匀分散,齐整可比”的特点。
问题背景
当软件的输入元素比较多时,如果采用决策表法规则的数量会产生指数级的增长。例如,用户信息输入界面有10个输入框和两个单选框,测试如果采用决策表法测试填写或不填写的系统结果,将会有2^10~2^12个规则。
正交试验法可以帮助测试人员大大缩减测试用例的数量。
正交表的由来
拉丁方名称的由来
古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表。数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方。
n阶拉丁方
用n个不同的拉丁字母排成一个n阶方阵(n<26),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方或n阶拉丁方。每个字母在任一行、任一列中只出现一次。
正交拉丁方
设有两个n阶的拉丁方,如果将它们叠合在一起,恰好出现n²个不同的有序数对,则称为这两个拉丁方为互相正交的拉丁方,简称正交拉丁方。
正交表的构成
正交表是由试验数(行数)、因素数(列数)和水平数三个部分构成的。
1. 行数(Runs)
正交表中的行的个数,即试验的次数,也是我们通过正交试验法设计的测试用例的个数。
2. 因素数(Factors)
正交表中列的个数,即我们要测试的功能点或控件。
3. 水平数(Levels)
任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到”水平数-1”或从1到”水平数”,各测试功能点的输入条件。
正交表的形式
L行数(水平数^因素数)
例如:L9(3^3)表示9行3因素3水平
正交表的正交性
整齐可比性
在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证在各个水平中最大程度上排除了其它因素水平的干扰。
均衡分散性
在同一张正交表中,任意两列(两个因素)的水平搭配(横向形成的数字对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,具有很强的代表性。
使用正交表设计测试用例的步骤
- 确定因素:根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素
- 确定每个因素的水平和取值:把各个因素的取值作为水平。对软件需求规格说明中的功能要求进行划分
- 选择合适的正交表:从现成的正交表中选择合适的正交表
- 映射变量值:把变量的值映射到表中
- 生成测试用例:把每一行的各因素水平的组合作为一个测试用例
- 补充测试用例:加上可疑且没有在表中出现的组合,利用错误推测法补充测试用例集中明显不足的测试用例
正交表的选择方法
选择原则
- 考虑因素(变量)的个数
- 考虑因素水平(变量的取值)的个数
- 考虑正交表的行数
- 取行数最少的一个
三种情况
1. 因素数、水平数与正交表相符
直接选择合适的正交表。
2. 因素数不相同
如果因素数不同,可以采用包含的方法。选择K个因素N个水平(K≥M)的正交表,如果有多个符合条件的正交表,则选取行数最少的。
3. 水平数不相同
当各个因素的水平数互不相同时,采用包含和组合的方法选取合适的正交表。设M因素分别有多个不同的水平数,假设最大的水平数为N,那么选取K因素S水平(K≥M且S≥N)的正交表。
组合的方法是采用中间步骤进行过渡,例如:
- 因素1: a1, a2
- 因素2: b1, b2, b3
- 因素3: c1, c2
可以采用将b1和b2放在一起形成同样水平的因素:
- 因素1: a1, a2
- 因素2: b1b2, b3
- 因素3: c1, c2
正交表的应用示例
用户信息输入测试
测试7个控件(用户ID、真实姓名、输入密码、确认密码、等级、Email、用户来源)的填与不填情况:
- 因素数:7
- 水平数:2(填、不填)
- 选择正交表:L8(2^7)
测试用例数:从128个减少到9个
三因素三水平试验
全面试验需要进行3^3=27种组合,而正交试验只需9次,大大减少了工作量。
优缺点
优点
- 大大减少测试用例数量
- 测试用例具有一定”均匀度”的覆盖率
- 用最小的测试用例集合去获取最大的测试覆盖率
缺点
- 测试用例可能覆盖不够全面
- 需要补充一些可疑的测试用例
适用场景
- 输入因素较多的情况
- 因素之间没有强烈的相互依赖关系
- 需要在有限时间内完成测试
正交表资源
正交表可以到网络上下载,例如: https://www.york.ac.uk/depts/maths/tables/orthogonal.htm