一个简单的例子
一个网页有三个不同的部分(Top,Middle,Bottom),并且每个部分都可以有两种状态:隐藏或显示(hidden或visible)
。而你要测试这三部分的相互影响;如果要测试所有可能的组合,将得到8个测试用例。如果你运用正交表的测试策略,得到的将是4个测试用例:
正如你所看到的,正交表并没有将所有的情况穷尽,因为在很多情况下,我们要测试的因素不只有3个,而这些因素的状态也不仅仅只有2种而已。为了在有限的时间发现更多的缺陷,我们要寻求一种高效率的设计方法。然而,我们又凭什么说,正交表就是我们期望的方法呢?正交表又是如何构造出来的呢?
正交表的特性
我们观察上面的正交表,可以得出它的两个特性:
- 任一列中,不同数字出现的次数相等
- 任两列中,同一横行所组成的数字对出现的次数相等
这即是正交表的两大优越性,即“均匀分散性,整齐可比”。通俗的说,每个因素(Top/Middle/Bottom)的每个水平(Hidden/Visible)与另一个因素各水平各碰一次,这就是正交性。
正交表实质上是选择了所有组合中具有代表性的部分组合;应用正交表进行测试,是在牺牲部分交互的情况下节省测试量。而它的使用,也出现在很多生物统计学、科学研究和加工工艺试验的教材里。
正交表的构造
正交表的构造有很多种方法,什么哈达玛(Hadamard)矩阵法,正交拉丁法,有限域内积表法等等。So,正交测试本身是很复杂的算法,想要弄清楚来龙去脉,是需要很强的抽象代数的功底的。好在正交表的构造过程可以通过工具――Minitab来实现。
图1 图2
图3
图4
图5
最后说的话
在科学实验中,正交是一种普遍应用的方法。虽然这个算法本身有些复杂,但是从我们使用的层面上来讲,正交表是很简单的。
在人力和时间允许的情况下,若测试要求比较高,我们应该尽可能多的覆盖所有情况。然而,在资源比较紧张的情况下,我们可以从大量的测试用例中选取有代表性的来测试,也就是利用正交表来减少测试用例数。