【转载】条件覆盖误读解析

      在白盒测试目的中,有一项是实现逻辑覆盖,要实现逻辑覆盖,可以分为几个实现等级,分别为语句覆盖、分支覆盖、条件覆盖、条件-分支覆盖、条件组合覆盖、路径覆盖。
      在很多资料和教材中,声明实现了条件覆盖,不一定能实现分支覆盖,所以才会有条件-分支覆盖。
      但实际上这是一种错误理解。
      举例说明:
      if(x>3 && y<10){
             ……
      }
      如果要实现分支覆盖,只要设计两个测试用例:取假分支x=2,y=9   和取真分支x=5,y=3
      如果要实现一般资料中所说的条件覆盖,使用每一个条件表达式的取真和取假都至少执行一次,需要设计两个测试用例:
      x>3     y<10     
       真        真            x=4,y=4
       假        假            x=2,y=20
      但两个测试用例中,第二个测试用例并未真正使用y<10的条件取到假,因为在很多开发语言中,前一个条件表达式取假、逻辑运算符为与时,第二个条件表达式根本不会被判断,也就不会被执行。也就未真正实现每一个条件表达式取真和取假至少执行一次的要求。
      如果要实现上述要求,就要追加一个测试用例
      x>3     y<10                                分支
       真        真            x=4,y=4           真
       假        假            x=2,y=20         假
       真        假            x=4,y=20         假
       这样才真正实现了条件覆盖。但由此我们还会发现,如果真实现了条件覆盖,则分支覆盖是一定实现的。
       所以应该将条件-分支覆盖一项取消,同时声明条件覆盖实现,一定会实现分支覆盖。

This entry was posted in 算法和编码, 计算机软件, 软件测试 and tagged , , , , , , , . Bookmark the permalink.

发表评论