什么是正交试验法
所谓正交试验设计法,是从大量的试验点中挑选出适量的、有代表性的点,应用依据迦罗瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法,是研究多因素多水平的一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是一种基于正交表的、高效率、快速、经济的试验设计方法。
通常把判断试验结果优劣的标准叫做试验的指标,把所有影响试验指标的条件称为因子,而影响试验因子的,叫做因子的状态。
以上的描述比较抽象,简单一点说,正交试验法是一种用来测试组合的方法,这一点和判定表法类似,但判定表法是通过人工对全排列组合来进行化简得到测试用例的,正交试验法是借助于数学工具,通过算法从全排列组合中选择出组合并放到正交表中,这样通过查看合适的正交表就可以直接得到测试用例。
这里提到的因子可以先简单理解成输入,一个软件的各个输入就可以看成因子。这样因子的状态就是输入的取值了。
正交表一般根据因子数和状态数叫做几因子几状态的正交表,下面是多因子两状态的正交表

这个表实际上包含了多个正交表,比如3因子2状态正交表、7因子2状态正交表等。这些正交表中横向的因子1、2、3、4对应的是因子的个数,纵向的项目就是从全排列组合中选出的要测试的组合,也可以看成就是测试用例。这样如果有3个因子,每个因子2个状态,设计出来的测试用例共有4个;如果有7个因子,每个因子2个状态,设计出来的测试用例共有8个。
本来7因子2状态的全排列组合数为2的7次方,也就是128个,结果通过正交试验法,最后测试了8个测试用例,这样真的就测试的不错了吗?正交表的关键到底在哪里?正交表的重点在于要用最少的测试用例对两两组合进行覆盖,仔细查看一下正交表,会发现因子1的0状态和因子2到7的0状态和1状态都组合过,因子1的1状态和因子2到7的0状态和1状态都组合过。而根据经验来看,如果两两组合没有问题,更复杂的三三组合、四四组合一般也不会有太大问题。因此正交试验法是通过测试最需要测试的两两组合来减少测试用例的个数的。
下面是4因子3状态的正交表,情况与上面的多因子两状态的正交表是类似的。

如何使用正交试验法
本工程方法具体的实施步骤如下:
步骤1:提取功能说明,构造因子-状态表

该步骤目的是要确定哪些输入和输入的取值需要进行组合。
步骤2:加权筛选,生成因素分析表
计算各因子和状态的权值,删去一部分权值较小,即重要性较小的因子或状态,使最后生成的测试用例集缩减到允许范围。
该步骤目的是要明确哪些输入和输入的取值是最需要进行组合的,这样可以压缩最后测试的组合数。
步骤3:利用正交表构造测试数据集
1. 如果各个因子的状态数是不统一的,几乎不可能出现均匀的情况。必须首先用逻辑命令来组合各因子的状态,作出布尔图。
2. 根据布尔图查找最接近的相应阶数的正交表。
3. 依照因果图上根节点到叶子节点的顺序逐步替换正交表上的中间节点,得到最终的正交表。
正交试验法的关键在于正交表的选取,可以按照以下原则进行选取:
如果不同因子的状态数相同,比如有M个因子,每个因子N个状态,则最好选取M因子N状态的正交表,如果该正交表不存在,则逐步增加因子数,直到找到一个存在的正交表。
如果不同因子的状态数不同,则先要确定正交表的状态数,确定的原则是看哪种状态数在各个因子中出现的最多,比如现在有4个因子,第1、2个因子有3状态,第3个因子有4状态,第4个因子有2状态,则由于状态数3出现次数最多,因此应该选择状态数为3的正交表。如果刚才说到的4个因子中第3个因子的状态数也是2,则出现状态数2、3均出现2次的情况,这种情况下应尽可能选择较大的值,也就是应该选3。正交表的状态数确定好了,下面就要确定正交表的因子数,这和不同因子的状态数相同的情况是类似的。还是上面的4个因子的例子,最好就应该选择一个4因子3状态的正交表了。
选择好正交表后需要将实际的因子和状态带入正交表,这个时候会出现:
1. 因子的状态数=正交表的状态数 这个时候直接替换即可。
2. 因子的状态数>正交表的状态数 这个时候需要先将多余的状态合并,带入正交表,然后展开即可。具体可看后面的案例2。
3. 因子的状态数<正交表的状态数 这个时候正交表中多出来的状态,用实际状态的任意值任意替换即可。
步骤4:利用正交表每行数据构造测试用例
针对用实际因子和状态替换过的正交表中的每一行选择数据构造测试用例即可。