您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 单元测试 > 正文

黑盒测试方法之组合覆盖法

发表于:2017-01-09 作者:网络转载 来源:

  一、全组合覆盖法
  全组合覆盖是设计尽可能少的测试用例,使各个被测元素的中的各类测试数据组合都被至少执行一次。
  全组合覆盖是覆盖率很高的覆盖法。
  二、两两组合覆盖法
  2.1两两组合覆盖
  基于以下基本事实:
  (1)软件系统的故障往往是由一些难以预料的系统因素及其相互作用而引起的
  (2)我们必须在数量庞大的各种组合情况和有限的资源之间作出一种科学、优化的选择;
  (3) 研究发现,20%~40%左右的软件故障是由某个系统参数引发,20%~40%左右的故障由某两个参数的相互作用引发,而大约70%的软件故障是由一个或两个参数的作用引起的;
  (4) 两两组合覆盖测试是一种覆盖任意单个系统因素、任两个系统因素间的组合以及尽可能多的多个因素间组合的方法.因此,两两组合覆盖测试方法具有很重要的应用价值。
  2.2正交排列法概述:
  正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法。
  下面给大家列举一个实例:
  在一个窗体中有多个控件(字体、字符样式、颜色、字号),每个控件有多个取值:
  · 字体:仿宋、楷体、华文彩云
  · 字符样式:粗体、斜体、下划线
  · 颜色:红色、绿色、蓝色
  · 字号:20号、30号、40号
  在测试时,要考虑这些控件的组合情况,组合量非常大( 34=81种组合情况)
  由于组合量太大,不可能为每一种组合都创建测试用例。如何采用最少的测试用例集合获得最大的测试覆盖率——采用正交排列法
  2.3正交表的概念
  正交表:一种特制的表,一般的正交表记为:
  · n是表的行数,也就是需要测试组合的次数
  · K是表的列数,表示控件的个数(因素的个数,或因子个数)
  · m是每个控件包含的取值个数(各因素的水平数,即各因素的状态数)
  如: L9(34)
  有4个控件
  每个控件有3个取值
  9为需要测试的组合个数
  2.4正交排列法的使用步骤
  ① 根据所测程序中控件的个数以及每个控件的取值个数,选取一个合适的正交排列表;
  ② 把控件及其取值列举出来,并对取值进行编号  ;
  ③ 把控件及其取值映射到正交排列表中;
  把正交排列表中的A、B、C、D(因子)分别替换成4个控件。
  把每列中的1,2,3(状态)分别换成这个控件的3个取值,排列顺序要按照表中给出的顺序。
  ④ 根据映射好的正交排列表编写测试用例。
  2.5 使用正交排列法分析字符属性设置程序(如上面的案例)
  步骤一:根据所测程序中控件的个数以及每个控件的取值个数,选取一个合适的正交排列表
  4个控件:字体、字符样式、颜色、字号
  每个控件有3个取值
  选择L9(34)正交排列表
  步骤二:把控件及其取值列举出来,并对取值进行编号

  步骤三:把控件及其取值映射到正交排列表中
  ① 把正交排列表中的A、B、C、D(因子)分别替换成4个控件。


  ② 把每列中的1,2,3(状态)分别换成这个控件的3个取值,排列顺序要按照表中给出的顺序

  步骤四:根据映射好的正交排列表编写测试用例
  正交表的每一行表示一种组合,对应编写一条测试用例

  使用正交排列法可以分析字符属性设置程序
  · 依次类推,把映射好的正交排列表中的每一行,转换成一条测试用例,这样,就可以写出9条测试用例。
  · 正交排列表是经过严格的数学推理得来的,也就是说这9条用例是最优的。
  · 这是进行测试的最少组合数量,但是,在测试中有72种(81-9)组合没有测试到。当然,如果时间允许,应该再补充一些用例。因为遗漏的组合越多,存在缺陷的可能性就越大。
  2.6 使用正交排列法的局限性
  (1)目前常见的正交排列表只有附录1中给出的几种,即使是已有的正交排列表,基本都要求每个控件中取值的个数要相等,这是在实际软件中很少遇到。
  (2)没有现成的正交排列表怎么办呢?那也只有凉拌了,真的只有凉拌了,要不你造一个也行!O(∩_∩)O~
  通过正交排列法的学习,我们更多的应该学习到一种测试思想,也就是在从所有组合集合中选取测试数据时,应该均匀的选取其中的组合作为测试用例,而不要只在某个局部选取数据。
  2.7 正交表的性质
  1) 每列中不同数字出现的次数相等。
  2)在任意两列中,将同一行的两个数字组成一个有序实数对,则每种有序实数对出现的次数相等。
  2.8 正交表的种类
  各列水平数均相同的正交表
  混合水平正交表
  L8(4*24)—一个控件有4个属性,4个控件有2个属性
  对于组合覆盖也就说这么多了,接下来会继续介绍其他一些黑盒测试方法。