目录
一、概述
1、组合测试的目的
-
界面上有多个选项,每个选项下面又有多个选值,对于这个界面测试的组合会非常的庞大,很容易产生组合爆炸;
-
组合测试的目的就是为了在组合爆炸的情况下提供一种相对合理的测试解决方案,在保证错误检出率的前提下,采用较少的测试用例进行测试。
2、组合测试的概念
-
组合测试就是将软件抽象成由一个或者多个参数影响的系统,并通过参数和参数的取值,按照一定的组合策略来规划的测试,叫做组合测试。
![](https://i-blog.csdnimg.cn/blog_migrate/c2399f04ad67b77ff86c7f08497bf70a.png)
二、组合测试输入数据要求
1、参数取值范围必须是可离散的
-
输入值不能是连续的,必须是可离散的。也就是说要将输入值变成上图中选项的可选值一样,
-
针对随机变量可能取的值列出的数据叫做离散数据。
2、连续的参数或过多的取值需进行划分子集
-
遇到输入域是连续的情况,可采用等价类、边界值、分类树等方法把本来连续的输入取值部分划分成离散的值。
-
在一定区间内可以任意取值的数据叫连续数据,其数值是连续不断的,相邻两个数值可作无限分割,即可取无限个数值。
三、组合测试的实施步骤(重点)
1、识别出所需测试的软件功能,以及影响被测软件功能的参数
2、依据1、的结果,识别每个参数的取值范围
3、依据1、的结果,识别出参数间的约束,依据约束的强度设定组合强度
4、依据3、中设定的组合强度,选择对应的组合测试方法,生成与组合测试强度相符的测试覆盖项
5、依据4、中的测试覆盖项生成测试用例,直到每个测试覆盖项都包含在至少一个测试用例中
四、组合强度(重点)
基于“简化版航空选座”例子,对“不同组合强度如何生成测试用例”进行讲解。
如图:
![](https://i-blog.csdnimg.cn/blog_migrate/f62309db4171d2ce8323ebdc9b292d5c.png)
-
测试条件项:目的地、舱位、座位
-
测试条件的覆盖项:目的地(北京、上海、广州),舱位(头等舱、公务舱、经济舱),座位(靠过道、靠窗)
-
使用组合强度设计测试用例时,需先列出测试条件和条件的覆盖要求,再把覆盖要求转成测试项并给出编号。该例子中要覆盖的测试数据项,相当于测试条件的覆盖项,所以不再单独罗列测试条件和条件的覆盖要求,也不把覆盖要求转成测试项了,直接用上图中的测试条件覆盖项编写测试用例。
-
测试覆盖项和测试条件之间的关系,可能是一对一、或一对多的关系。
1、单一选择
(1)概念
-
所选参数取值范围的任意可能取值至少被一个测试用例覆盖
(2)如何设计测试用例
![](https://i-blog.csdnimg.cn/blog_migrate/d694a7418d386f6c447857097a772ef2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a5b54d2601f1afeb2aeb53ebdaf98e7b.png)
(3)注意
-
满足单一选择强度的覆盖率要求,可能有多种组合方案。
-
考试时采用单一选择设计测试用例,要注意将所有测试条件的覆盖项在测试用例中都覆盖到,此时参数之间如何组合,是否有约束是没有要求的。
-
当参数组合之间有要求时,就不能采用单一选择测试了。例如去北京的舱位只有头等舱、公务舱,没有经济舱,此时就不能用单一选择设计组合测试用例了。
2、基本选择
(1)概念
-
对于任意一个参数的两个取值,存在两个测试用例覆盖这两个取值,且其他参数的取值相同。
-
也就是先变化一个参数的取值进行测试,直到这个参数的所有可能取值都被覆盖到,再只变化另一个参数进行测试。
(2)如何设计测试用例
-
对于测试条件目的地、舱位、座位,有基本测试用例:北京、头等舱、靠过道;在舱位和座位取值不变的情况下,目的地的取值上海、广州都要被测试;在目的地和座位的取值不变的情况下,舱位的取值公务舱、经济舱都要被测试;在目的地和舱位不变的情况下,座位的取值靠窗也要被测试。
-
基本选择测试用例的数量=每一个测试条件取值数量-1相加
![](https://i-blog.csdnimg.cn/blog_migrate/8ec62012a2dbabc902d408ff3adf1c7f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b375abcae56a4cb055fcb26e346182a.png)
3、成对组合
(1)概念
-
被测软件中的任意两个参数的取值范围的任意一对有效取值至少被一个测试用例覆盖
(2)如何设计测试用例
-
对于本例中的测试条件项:目的地、舱位、座位中的任意两个参数,可能的组合有:目的地和舱位、目的地和座位、舱位和座位,将这些组合生成成对组合的测试覆盖项。
-
成对组合的测试覆盖项的数量=目的地取值的个数*舱位取值的个数+目的地取值的个数*座位取值的个数+舱位取值的个数*座位取值的个数=3*3+3*2+3*2=21
-
由于一个测试用例可能覆盖了多个成对组合的测试覆盖项,所以虽然测试覆盖项有21个但是测试用例只有9个。
-
一般来讲成对组合测试用例的数量是测试条件中两个取值数量最多的条件的乘积。
![](https://i-blog.csdnimg.cn/blog_migrate/18a95b43c2480bf85e5e0e0b70a13c67.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7936cabf2a5597bd9a8a6063927f7582.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3b205e114a85ad10ec9bf1ee56cc791a.png)
4、全组合
(1)概念
-
所有参数取值范围的任意有效取值的组合至少被一个测试用例所覆盖
(2)如何设计测试用例
-
全组合的测试覆盖项的数量=目的地取值的个数*舱位取值的个数*座位取值的个数=3*3*2=18
-
全组合测试用例的数量=所有测试条件取值个数的乘积
![](https://i-blog.csdnimg.cn/blog_migrate/3deed94dabc8234fb57d204f290607b4.png)
5、K强度组合
(1)概念
-
在组合要求为K的组合中,任意K个参数取值范围的任意有效的组合至少被一个测试用例覆盖
-
K=1时,K强度组合就是“单一选择”,只需要考虑单个测试条件的取值都被覆盖到就行。
-
K=2时, K强度组合就是“成对组合”。
-
K=K(K为测试条件数量的最大值)时, K强度组合就是“全组合”,本例中K=3时表示“全组合”。