我们已经在组合测试中的测试配置生成中讨论了用于测试配置生成的算法。让我们通过下面给出的已解决示例深入了解该算法。
例子
考虑一个可以在以下三种浏览器中运行的应用程序:Safari,Internet Explorer和Firefox。该应用程序可在三个操作系统(包括Windows,macOS和Linux)上运行。该应用程序能够使用三种连接协议(包括LAN,PPP和ISDN)连接到设备。同样,输出将发送到本地或网络打印机,或者由应用程序发送到屏幕。对于给定的应用程序,请执行以下操作:
- 确定给定问题的因素和水平
- 使用MOLS满足以下约束的应用程序生成测试配置:
- Safari仅支持macOS
- Internet Explorer仅在Windows上有效
- Firefox可在所有三种操作系统(即macOS,Windows和Linux)上使用
解决方案:
1.确定因素和水平
对于给定的问题,因素和水平为:
FACTORS | LEVELS |
---|---|
F1′ : Browser | Safari, Internet Explorer, Firefox |
F2′ : Operating System | Windows, macOS, Linux |
F3′ : Protocol | LAN, PPP, ISDN |
F4′ : Printer | Network, Local, To_Screen |
因此,共有4个因素,每个因素具有3个水平。
2.生成测试配置
(a)重新标记因素
必须重新标记因素,以便:
Since, |F1| = |F2| = |F3| = |F4| = 3
So, the relation |F1| >= |F2| >= |F3| >= .........|Fn-1| >= |Fn| is satisfied.
Therefore, factors are labeled as:
F1 = F1'
F2 = F2'
F3 = F3'
F4 = F4'
Also, as b = |F1| and k = |F2|,
Therefore, b = 3 and k = 3
注意: | Fi |是因子Fi中的级别数。另外,b表示块数,k表示每个块中的行数。
(b)准备一个表格并填充F1和F2列
现在我们准备一个包含4列的表,因为有四个因素。另外,我们需要(bxk)行数,即(3 x 3)= 9行,分为3个块。现在,我们在F1列中的第1块填充1,在第2块填充2s,依此类推。同样,我们在第1行到第k行中使用序列1,2,3…k填充F2列。准备的表如下:
BLOCK | ROW | F1 | F2 | F3 | F4 |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | ||
1 | 2 | 1 | 2 | ||
1 | 3 | 1 | 3 | ||
2 | 1 | 2 | 1 | ||
2 | 2 | 2 | 2 | ||
2 | 3 | 2 | 3 | ||
3 | 1 | 3 | 1 | ||
3 | 2 | 3 | 2 | ||
3 | 3 | 3 | 3 |
(c)找到k阶的MOLS并填充其余的列
Since k = 3,
So, MOLS of order 3 are required.
We know that if k is a prime or power of prime then number of MOLS = k - 1
As k = 3 is prime, therefore 2 MOLS exists that are:
1 2 3 1 2 3
M1 = 2 3 1 M2 = 3 1 2
3 1 2 2 3 1
我们使用F1的M1列和F4的M2列填充其余两列:
BLOCK | ROW | F1 | F2 | F3 | F4 |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 |
1 | 2 | 1 | 2 | 2 | 3 |
1 | 3 | 1 | 3 | 3 | 2 |
2 | 1 | 2 | 1 | 2 | 2 |
2 | 2 | 2 | 2 | 3 | 1 |
2 | 3 | 2 | 3 | 1 | 3 |
3 | 1 | 3 | 1 | 3 | 3 |
3 | 2 | 3 | 2 | 1 | 2 |
3 | 3 | 3 | 3 | 2 | 1 |
(d)检查是否满足约束条件
在给定的问题中,因素F1(浏览器)和F2(操作系统)相互依赖,如下所示:
- Safari仅支持macOS
- Internet Explorer仅在Windows上有效
- Firefox可在所有三种操作系统(即macOS,Windows和Linux)上使用
因此,如果该行中的条目不满足上述约束,则以黄色突出显示:
BLOCK | ROW | F1 | F2 | F3 | F4 |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 |
1 | 2 | 1 | 2 | 2 | 3 |
1 | 3 | 1 | 3 | 3 | 2 |
2 | 1 | 2 | 1 | 2 | 2 |
2 | 2 | 2 | 2 | 3 | 1 |
2 | 3 | 2 | 3 | 1 | 3 |
3 | 1 | 3 | 1 | 3 | 3 |
3 | 2 | 3 | 2 | 1 | 2 |
3 | 3 | 3 | 3 | 2 | 1 |
上表中有四行不满足给定约束。例如,第1块的第1行,F1 = 1并且F2 = 1,即F1是Safari,F2是Windows,但是,在第一个约束条件中明确提到Safari仅支持macOS,不支持其他操作系统。因此,该行不满足约束条件,因此被突出显示。
(e)删除不满足给定约束的配置
上表中以黄色突出显示的配置必须删除,并且要执行此操作,我们将使用两步过程:
- 修改突出显示的行,以便保留约束
- 添加新配置,以覆盖替换突出显示的行时未被发现的对
因此,在第一步中,我们修改上面突出显示的行,以使这些行满足给定的约束。修改后的表如下所示:
BLOCK | ROW | F1 | F2 | F3 | F4 |
---|---|---|---|---|---|
1 | 1 | 1 | 2 | 1 | 1 |
1 | 2 | 1 | 2 | 2 | 3 |
1 | 3 | 1 | 2 | 3 | 2 |
2 | 1 | 2 | 1 | 2 | 2 |
2 | 2 | 2 | 1 | 3 | 1 |
2 | 3 | 2 | 1 | 1 | 3 |
3 | 1 | 3 | 1 | 3 | 3 |
3 | 2 | 3 | 2 | 1 | 2 |
3 | 3 | 3 | 3 | 2 | 1 |
For the second step, The new configurations are as follows:
F1 F2 F3 F4
- 1 1 1 ....(A)
- 3 3 2 ....(B)
- 2 3 1 ....(C)
- 3 1 3 ....(D)
Here, '-' denotes that F1 could take any value out of 1,2,3.
上表中的(A)和(C)已满足,因为:
- 在块2的第3行中出现F2 = 1和F3 =1。此外,在块1的第1行中出现F3 = 1和F4 =1。因此,满足(A)
- 同样,在块1的第3行中出现F2 = 2且F3 = 3,在块2的第2行中出现F3 = 3且F4 =1。因此,满足(C)
但是,上表中不满足(B)和(D),因此我们将它们添加到唯一配置表中。更新后的表如下所示:
BLOCK | ROW | F1 | F2 | F3 | F4 |
---|---|---|---|---|---|
1 | 1 | 1 | 2 | 1 | 1 |
1 | 2 | 1 | 2 | 2 | 3 |
1 | 3 | 1 | 2 | 3 | 2 |
2 | 1 | 2 | 1 | 2 | 2 |
2 | 2 | 2 | 1 | 3 | 1 |
2 | 3 | 2 | 1 | 1 | 3 |
3 | 1 | 3 | 1 | 3 | 3 |
3 | 2 | 3 | 2 | 1 | 2 |
3 | 3 | 3 | 3 | 2 | 1 |
4 | 1 | – | 3 | 3 | 2 |
4 | 2 | – | 3 | 1 | 3 |
(f)用给定的因子值替换列中的数字
现在,将F1,F2,F3和F4列的值替换为它们的实际值,即级别。最终的设计配置如下所示:
S.No. | F1 | F2 | F3 | F4 |
---|---|---|---|---|
1 | 1 [Safari] | 2 [macOS] | 1 [LAN] | 1 [Network] |
2 | 1 [Safari] | 2 [macOS] | 2 [PPP] | 3 [To_Screen] |
3 | 1 [Safari] | 2 [macOS] | 3 [ISDN] | 2 [Local] |
4 | 2 [Internet Explorer] | 1 [Windows] | 2 [PPP] | 2 [Local] |
5 | 2 [Internet Explorer] | 1 [Windows] | 3 [ISDN] | 1 [Network] |
6 | 2 [Internet Explorer] | 1 [Windows] | 1 [LAN] | 3 [To_Screen] |
7 | 3 [Firefox] | 1 [Windows] | 3 [ISDN] | 3 [To_Screen] |
8 | 3 [Firefox] | 2 [macOS] | 1 [LAN] | 2 [Local] |
9 | 3 [Firefox] | 3 [Linux] | 2 [PPP] | 1 [Network] |
10 | – | 3 [Linux] | 3 [ISDN] | 2 [Local] |
11 | – | 3 [Linux] | 1 [LAN] | 3 [To_Screen] |