目录
2.4 正交实验设计法
实际的软件测试中,软件往往会很复杂,很难从软件的规格说明中得出一一对应的输入和输出关系,基本无法划分出等价类,而使用因果图法,画出的因果图也会很庞大。为了合理有效地进行测试,可以利用正交实验法设计测试用例。
2.4.1 正交实验设计法概述
正交实验设计法(Orthogonal Experimental Design)是指从大量的实验点中挑选出适量的、有代表性的点,依据Glois理论导出“正交表”,从而合理地安排实验的一种实验设计方法。
正交实验设计法包含3个关键因素:
- 指标:判断实验结果优劣的标准。
- 因子:因子也称为因素,是指所有影响实验指标的条件。
- 因子的状态:因子的状态也叫因子的水平,它指的是因子变量的取值。
利用正交实验设计法设计测试用例时,可以按照如下步骤进行:
(1)提取因子,构造因子状态表
分析得到影响软件功能的因子,确定因子可以有哪些取值。如某软件运行功能的因子—状态表:
(2)加权筛选,简化因子—状态表
根据因子及状态的重要程度进行加权筛选,选出重要的因子与状态,简化因子—状态表。
(3)构建正交表,设计测试用例
正交表的表示形式为Ln(tc)。
- L表示正交表。
- n为正交表的行数,正交表的每一行可以设计一个测试用例,因此行数n也表示可以设计的测试用例的数目。
- c表示正交实验的因子数目,即正交表的列数,因此正交表是一个n行c列的表。
- t称为水平数,表示每个因子能够取得的最大值,即因子有多少个状态。
例如L4(23)是最简单的正交表,它表示该实验有3个因子,每个因子有两个状态,可以做4次实验,如果用0和1表示每个因子的两种状态,则该正交表就是一个4行3列的表,如:
在实际软件测试中,大多数情况下,软件有多个因子,每个因子的状态数目都不相同,即各列的水平数不等,这样的正交表称为混合正交表,如L8(24×41),这个正交表表示有4个因子有2种状态,有1个因子有4种状态。混合正交表往往难以确定测试用例的数目,即n的值,这种情况下,可以登录正交表的一些权威网站,查询n值以及各行的取值。(这些网站具有科学的算法)
正交表最大的特点是取点均匀分散、齐整可比,每一列中每种数字出现的次数都相等,即每种状态的取值次数相等;此外,任意两列组成的对数出现的次数相等。
在正交表中,每个因子的每个水平与另一个因子的各水平都“交互”一次,这就是正交性,它保证了实验点均匀分散在因子与水平的组合之中,因此具有很强的代表性。
对于受多因子多水平影响的软件,正交实验法可以高效适量地生成测试用例,减少测试工作量,并且利用正交实验法得到的测试用例具有一定的覆盖度,检错率可达50%以上。
正交实验法虽然好用,但在选择正交表时要注意先要确定实验因子、状态及它们之间的交互作用,选择合适的正交表,同时还要考虑实验的精度要求、费用、时长等因素。
2.4.2 实例:微信Web页面运行环境正交实验设计
如果要测试微信Web页面运行环境,需要考虑多种因素。在众多的因素中,我们可以选出几个影响比较大的因素,如服务器、操作系统、插件和浏览器。对于选取出的4个影响因素,每个因素又有不同的取值,同样,在每个因素的多个值中,可以选出几个比较重要的值,具体如下:
- 服务器:IIS、Apache、Jetty。
- 操作系统:Windows 7、Windows 10、Linux。
- 插件:无、小程序、微信插件。
- 浏览器:IE 11、Chrome、FireFox。
对于多因素多水平的测试可以选择正交实验法,正交实验法的第一步就是提取有效因子。由上述分析可知,微信Web版运行环境正交实验中有4个因子:服务器、操作系统、插件、浏览器,每个因子又有3个水平,因此该正交表是一个4因子3水平正交表,在正交表查询网站查询可得其n值为9,即该正交表是一个9行4列的正交表。
水平编号分别代表因子的不同取值,将因子、状态映射到正交表,可生成具体的测试用例:
表中每一行都是一个测试用例,即微信Web页面的一个运行环境。对于该测试案例,如果使用因果图法要设计3^4=81个测试用例,而使用正交实验设计法,只需要9个测试用例就可以完成测试。
正交实验设计法虽然高效,但并不是每种软件测试都适用,在实际测试中,正交实验设计法其实使用比较少。
理解正交的含义,特点是取点均匀分散、齐整可比,这些可以得出正交表的网站都是有良好的正交算法的。