1、概述

在利用因果图和判定表驱动法来设计测试用例时,作为输入条件的原因和输出结果之间的关系有时候很难从需求规格说明中得到;或者因果关系非常庞大,导致利用因果图得到的测试用例数目非常大,为了有效地、合理地减少测试的工时与费用(测试用例的数量),就可以使用正交实验法。

2、定义

此方法是由数理统计学科中正交实验方法演化而来的一种用于测试多条件多输入的用例设计方法, 是根据Galois(伽罗瓦)理论导出的“正交表”,合理安排实验的一种科学实验设计方法,是研究多因子(因素)多水平(状态)的一种实验方法。 其根据实验数据的正交性,从全面实验数据中挑选有代表性的点进行实验,这些点具备了“均匀分散、齐整可比”的特点,正交实验设计是一种基于正交表的、高效率、快速、经济的实验设计方法。但其也有一定的缺点,由于正交表本身是从数学公式引申而来的,所以在使用过程中无法考虑输入参数相互组合的实际意义,因此在实际使用过程中需要根据相关的业务进行判断,删除无效的输入(数据)组合,补充有效的输入(数据)组合。

相关术语:

  1. 因子:通常指参与实验、影响实验结果的条件。
  2. 水平:通常指影响实验因子的取值或输入,将其称为某个因子的水平。

3、特点步骤

1. 正交实验法设计测试用例的特点

使用正交实验法,需要考虑参与因子“均匀分散、齐整可比”的特性,保证每个实验因子及其取值都能参与实验,减少人为测试习惯导致的覆盖率偏低及冗余测试用例的风险。故而其具有节省时间、控制测试用例数量、保证测试用例覆盖率等优点。

关于整齐可比和均匀分散的理解:

  1. 整齐可比:在同一张正交表中,每个因子的每个水平出现的次数完全相同。 在实验中,每个因子的每个水平与其他因子的每个水平参与实验的几率完全相同,这就保证在各个水平中最大限度的排除了其他因子水平的干扰。因而,能最有效地进行比较和做出展望,容易找到好的实验条件。
  2. 均匀分散:在同一张正交表中,任意两列(两个因子)的水平搭配(横向形成的数字对)是完全相同的。 这就保证了实验条件均衡地分散在因素水平的完全组合之下中,因而具有很强的代表性,容易得到好的实验条件。
2. 正交实验法设计测试用例的步骤
  1. 提取功能说明,构造因子——状态表,即根据需求的描述,分析出其中的输入条件及每个条件可能的取值,如果取值较多,可以使用边界值和等价类等其它方法先优化,然后再构造因子——状态表,将输入条件作为因子,每个条件的取值作为相应的水平或者说状态。 在具体操作时,要针对需求规格说明书中的功能描述进行分析,不断将其进行分解,最后把其中整体的、概要性的功能要求分解为具体的、有相对独立性的基本的功能要求,这样,就可以将被测软件中所有的因子与状态确定下来。由于因子与水平数是设计测试用例的关键,因此要尽可能全面地、正确地确定因子及其相应的取值,以确保最终测试用例设计的完整性与有效性。
  2. 根据上一步确定的因子数及水平数,选择合适的正交表(正交表的具体选择方法见下文)。 正交表可以从数理统计相关书籍和正交实验网站查询得到,其具体的构造依据还是前面提到的Galois理论。
  3. 替换正交表中的因子及水平,获取实验次数及相关实验内容。 即将1中因子及其相应的状态写入正交表,这样,每一行即可构成一个测试用例的规则。
  4. 根据以往的实践经验,再在3中形成的正交实验表上添加相应的因子——水平组合。
  5. 针对4中最终形成的正交表的每一行的规则,设计测试用例。

4、正交实验法测试用例数的计算及正交表的选择方法

1. 测试用例数目的计算

在行数为mn型的正交表中(m和n是正整数),实验次数(行数)=∑(每列的水平数-1)+1,也就是说,对于一个具有m个因子,每个因子具有n个水平的实验,最少需要m*(n-1)+1个测试用例。通过这个公式,就可以计算出在使用正交实验法所需要的最少的测试用例。

2. 正交表的选择方法

一般用L表示正交表,常用的正交表如下图所示:

中药学正交试验python 正交试验法数据处理_正交表的选择方法


以上图中第二个和第四个为例,解释上图符号中各个字段的意思。首先,第二个符号中,4代表因子数,3代表水平数,9代表的是最少需要的实验次数,也就是说,该符号表示一个4因子3水平的测试,如果用正交实验法来设计测试用例,最少需要9条测试用例;而第四个符号中的4代表有一个4水平的因子,乘号后面则表示一个4因子2水平的意思,8代表此种情况下使用正交表需要设计的最少的测试用例条数。

一般来讲,正交表的选择方法遵循以下原则:

  1. 如果因子数和每个因子的水平数刚好符合某个正交表的因字数和水平数,直接选用相应的正交表即可。 例如对于一个具有4个因子,每个因子有3个水平的情况来讲,直接选择第二个正交表L9即可。
  2. 如果因子数和所有的正交表格都不符合,则选择因子数刚好大于该场景因字数的正交表,将表中多余的因子抛弃即可。 例如,对于一个具有3因子,每个因子具有3个水平的情况来说,可以直接选择上图中的第二个表,即4因子3水平的正交表L9,并且将表中多余的因子删去即可。
  3. 如果水平数与所有的正交表格都不符合,则选择因子数和水平数均大于该场景的因字数和水平数并且实验次数最少的正交表,然后将多余的删除,多余的水平数均分参与实验即可。 例如,对于一个具有3个因子,其中2个因子每个具有2个水平,而剩余1个具有3个水平的情况来说,正交表中没有这种情况的表,与之最接近的表示3因子2水平及4因子3水平的表,依据上述原则,直接选择4因子3水平的表即可,不过由于4因子3水平的表实验次数要9条,也可以先将具有3个水平的因子的其中两个水平组合为一个水平,这样就形成了3因子2水平的情况,再选择前面的3因子2水平的正交表即可(最后将3因子2水平的表中的组合的水平拆分开来即可)。

5、使用场景

因为正交实验法能借助于正交实验表快速得到测试组合,所以通常被用在组合查询、兼容性测试、功能配置和平台参数配置等方面。因此在软件测试用例设计中有着广泛的应用。

6、实例

有一个Web网站,该网站存在不同的服务器和操作系统配置,并且支持用户使用不同的浏览器及插件访问该网站视频,请设计测试用例进行该网站的兼容性测试。具体的各项数据如下:

  1. 插件:无、RealPlayer、MediaPlayer
  2. Web浏览器:Netspace 6.2、IE 6.0、Opera 4.0
  3. 应用服务器:IIS、Apache、Netspace Enterprise
  4. 操作系统:Windows 2000、Windows NT、Linux

针对上述功能进行测试,首先,根据第3部分所讲的步骤,构造因子状态表,如下所示:

中药学正交试验python 正交试验法数据处理_正交实验法的特点_02

从上述的因子——状态表中可以看到,其是一个四因子三水平的测试场景,按照上述正交表的选择方法所述,直接选择相应的四因子三水平的正交实验表即可,相应的正交表如下:

中药学正交试验python 正交试验法数据处理_正交实验法的实例_03


查询到正交表(如上图)后,然后按照第三部分所述的步骤,替换正交表中相应的内容,结果如下:

中药学正交试验python 正交试验法数据处理_正交实验法的特点_04


然后,根据经验,再补充四个因子中都取2和3的实验数据,补充后的正交表如下所示:

中药学正交试验python 正交试验法数据处理_正交实验法的实例_05


到这一步,最终的正交表已经绘制完成,然后针对正交表中的每一行,设计测试用例,具体的数据或者说环境组合就是每一行后面每一列因子的取值的组合,即最终形成了11条测试用例,每条测试用例中每个因子的取值或者说状态就是表中每列的值。