您的位置:首页 > 其它

白盒测试方法

2013-06-26 16:53 134 查看
 白盒测试方法:静态方法和动态方法
       静态方法:
       控制流分析     可以发现以下缺陷:

                                死循环
                                执行不到的语句
                               不存在的语句

         
       数据流分析     可以发现以下缺陷:

变量未定义被使用

变量已定义未使用

 
        信息流分析      可以帮助开发人员定位缺陷:

输入变量和语句的关系

输出变量和语句的关系

 输入变量和输出变量的关系

 
动态方法:
六种覆盖方法
  首先为了下文的举例描述方便,这里先给出一张程序流程图。(本文以1995年软件设计师考试的一道考试题目为例,图中红色字母代表程序执行路径)。
        
  1、语句覆盖
  1)主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。
  2)用例设计:(如果此时将A路径上的语句1—〉T去掉,那么用例如下)

 
 X
 Y
 路径
 1
 50
 50
 OBDE
 2
 90
 70
 OBCE
  3)优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
  4)缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在本例中去掉了语句1—〉T去掉,那么就少了一条测试路径。在if结构中若源代码没有给出else后面的执行分支,那么语句覆盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再如,在Do-While结构中,语句覆盖执行其中某一个条件分支。那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。
  2、判定覆盖
  1)主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。
  2)用例设计:

 
 X
 Y
 路径
 1
 90
 90
 OAE
 2
 50
 50
 OBDE
 3
 90
 70
 OBCE
  3)优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
  4)缺点:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。
  3、条件覆盖
  1)主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。
  2)用例设计:

 
 X
 Y
 路径
 1
 90
 70
OBC
 2
40
 
OBD
  3)优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。
  4)缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
4、判定/条件覆盖
  1)主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
  2)用例设计:

 

 X
 Y
 路径
 1
 90
 90
 OAE
 2
 50
 50
 OBDE
 3
 90
 70
 OBCE
 4
 70
 90
 OBCE
  3)优点:判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。
  4)缺点:判定/条件覆盖准则的缺点是未考虑条件的组合情况。
  5、组合覆盖
  1)主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。
  2)用例设计:

 
 X
 Y
 路径
 1
 90
 90
 OAE
 2
 90
 70
 OBCE
 3
 90
 30
 OBDE
 4
 70
 90
 OBCE
 5
 30
 90
 OBDE
 6
 70
 70
 OBDE
 7
 50
 50
 OBDE
  3)优点:多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。并且每个条件都显示能单独影响判定结果。
  4)缺点:线性地增加了测试用例的数量。
  6、路径覆盖
  1)主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。
  2)用例设计:

 
 X
 Y
 路径
 1
 90
 90
 OAE
 2
 50
 50
 OBDE
 3
 90
 70
 OBCE
 4
 70
 90
 OBCE
  3)优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。
  4)缺点:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。而在有些情况下,一些执行路径是不可能被执行的,如:

  If  (!A)B++;

  If  (!A)D--;
  这两个语句实际只包括了2条执行路径,即A为真或假时候对B和D的处理,真或假不可能都存在,而路径覆盖测试则认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  白盒测试方法