大家好,我是十一。
前情回顾
上面一篇我们讲了正交实验法,我们先来回顾下:
正交实验法
正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验。
组成元素:因素/因子,即被测试的元素;水平数,即每个被测试元素的取值个数(用等价类划分、边界值分析法得出来的值);行数,即实验次数或者说测试用例个数。
建表步骤:同组成元素一样,先确定因素;再确定水平;最终确定行数。
问题解答
接下来我们来看看上篇留的作业;上篇中我们最后用正交实验法得出如下图所示的4个测试用例:
具体为什么是这4条测试用例,我们就要提到正交表的两个特性了。具体如下:
特性一:每一列中各个值出现的次数都一样多;
比如:鲜花系列这列中,尊贵和优雅均出现2次;配送时间这列中,工作日和双休日均出现2次;购买套餐中1年期和3年期各自出现2次。
特性二:任何两列所构成的续数对出现的次数都一样多。所以称之为正交表。
每两列的组合中既没有重复也没有遗漏的,反应了试验点分布的均匀性。
比如:鲜花系列和配送时间这两列中,两两组合共有4种情况,全部列出来即尊贵-工作日、尊贵-双休日、优雅-工作日、优雅-双休日;鲜花系列和购买套餐这两列中,两两组合共有4种情况,全部列出来即尊贵-1年期、尊贵-3年期、优雅-3年期、优雅-1年期;最后配送时间可购买套餐这两列,同样两两组合共有4种情况,全部列出来即工作日-1年期、双休日-3年期、工作日-3年期、双休日-1年期;把这3列拼起来即组成了我们的表2:正交测试。
总结:由测试用例可以看出:如果按每个因素两个水平数来考虑的话,全面测试需要8个测试用例,而通过正交实验法设计测试用例只需要4个用例,大大减少了测试用例数。正交实验法做到了用最小的测试用例集合去获取最大的测试覆盖率。
上面例子中,我们每个因子的水平数一样,我们称这类正交表为相同水平正交表;如L4(2^3)、L8(2^7)、L12(2^11)等各列中最大取值个数为2,称为两水平正交 表;L9(3^4)、L27(3^13)等各列中最大取值个数为3,称为3水平正交表。凡是标准表,水平数都相等。那与之相反的就是混合正交表了。混合正交表如何构建呢?
混合正交表
一个正交表中各列的水平数不相等时,我们称它为混合型正交表,如L8(4×2^4),即:L8(4^1×2^4),此表的5列中,有1列为4水平,4列为2水平。再如L16(4^4×2^3),L16(4×2^12)等都混合正交表。
比如:我们现在有需求是其中有一列有4个选项值,有四列有2个选项值,那么我们可以直接套用L8(4×2^4)这个正交表,具体操作见上篇《测试用例设计方法篇-正交实验法》中的例子介绍,唯一要注意的是,混合正交表的行数计算为:
行数 = 因素数 * (水平数 -1)+ 因素数 * (水平数-1)+1
如L8(4×2^4)这个,8 = 1 * (4-1)+ 4 * (2-1)+1;
找不到匹配的正交表
值得注意的是,在这两篇中我们一直说的都是“选取正交表,然后套用”;为什么这么说呢?因为事实上并不是我们想要什么正交表就有什么正交表,有的正交表是没有被设计出来的,我们选取正交表时只能从现有的正交表中进行选择(现有正交表见附录介绍)。
那前面讲到的都是有刚好匹配的正交表的情况,那么测试时我们会发现实际测试中情况要更复杂,更多变,现有的正交表中根本没有我们想要的,有可能是因素不同,也有可能水平数不同,总之就是没有完全符合的,这时候如何选择正交表呢?
接下来我们看个例子,我们通过例子来讲解。
比如我们对爱奇艺播放器进行进行简单的测试,说明如下:
爱奇艺浏览器的播放位置有:开始位置、中间段、结尾位置;播放状态有:播放中、暂停;播放的操作有:快进、快退;
1.先确定因素
根据需求,发现因素为:播放位置、播放状态、播放操作
2.确定因素的水平,如下表因素-水平表-1所示:
3.选定正交表
根据因素-水平对应的表来看,有一个因素(播放位置)是3水平,有两个因素(播放状态和播放操作)是2水平;查询附录中的正交表,发现没有与之完全符合的正交表,与之接近的正交表有L4(2^3),我们将播放位置的水平由3缩减到2,那么因素-水平表变为“因素-水平表-2”所示:
L4(2^3)表表示如下表正交表-1所示:
将我们例子中的因素、水平带入表中,成为正交表-1,如下:
然后把“正交表-1”中的灰色区域展开变成两条,如正交表-2所示:
正交表-2就是我们最终得到的正交表,这个表中每一行就是一个测试用例,大家可以自己写出来,作为这节课的课后作业!
课后思考题
如下两个问题,留作课下思考题,同样也是我们下节课的知识点,希望大家自行思考或者百度先找找答案。
问题一:百度下会发现很多文章中说当发现没有匹配的正交表时,我们需要选择在因素和水平数都满足的前提下行数最少的正交表,也就是说选择水平数和因素数>=当前水平数和因素数的正交表,那我们这篇中用到的方法显而易见不是这个,为什么呢?两者的差别在哪里?
问题二:是不是正交实验法设计出来的测试用例来就足够我们测试使用了?
附录
正交表:
https://www.york.ac.uk/depts/maths/tables/orthogonal.htm
https://www.york.ac.uk/depts/maths/tables/taguchi_table.htm
好了,今天到此结束。如有任何问题请留言及时与我沟通,我会尽快回复大家!谢谢大家~我们下次再见!
让我们共同相伴,开启软件知识之旅。