白盒测试中的六种覆盖方法

Posted yinqanne

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了白盒测试中的六种覆盖方法相关的知识,希望对你有一定的参考价值。

一、语句覆盖

念:语句覆盖是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次

 

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

 

 

测试用例:A=2,B=0,X=3

缺陷:如果代码中第一个if条件中,“A>1&&B=0”错写成“ A>1 || B=0”。该错误语句覆盖是测试不出问题

 

二、判定覆盖

概念:程序中的每一个分支至少都通过一次

 

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

 

举例:

(1)A=3, B=0, X=1

(2)A=2, B=1, X=3

 

缺陷:如果异常是必须两个if里都为真的情况下才会出现,那么判定覆盖就没有测试到该情况

 

三、条件覆盖

定义:判定中的每个条件获得各种可能的结果

 

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

 

举例:

(1)A=2, B=1, X=4

(2)A=1, B=0, X=1

 

缺陷:虽然4个条件的真假都出现了一次,满足条件覆盖100%。但其中X=X/A语句并未测试到

 

四、判定/条件覆盖

定义:判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果

 

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

 

举例:

(1)A=2,B=0,X=4,

(2)A=1,B=1,X=1

缺陷:“判定/条件覆盖”似乎是比较合理的,但事实并非如此,因为大多数计算机不能用一条指令对多个条件作出判定,

而必须将源程序中对多个条件的判定分解成几个简单判定,所以较彻底的测试应使每一个简单判定都真正取到各种可能的结果

 

五、条件组合覆盖

定义:每个判定中条件的各种可能组合都至少出现一次

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

举例:

(1)A>1, B=0

(2)A>1, B!=0

(3)A≤1, B=0

(4)A≤1, B≠0

(5)A=2, X>1

(6)A=2,X≤1

(7)A≠2, X>1

(8)A≠2, X≤1

缺陷:虽然8种组合都出现了,但最基本的第一个if为真,第二个if为假的情况并未出现

 

六、路径覆盖

定义:程序中每条路径都需要覆盖

缺陷:路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于白盒测试中的六种覆盖方法的主要内容,如果未能解决你的问题,请参考以下文章

清华学长熬夜30天总结出来了 “ 白盒测试中的六种覆盖方法 ” 在 Github标星31K+

软件工程作业

Python之编写测试用例,unittest模块中的TestCase类中的六种断言方法,以及setUp()函数。

Java程序员注意——审查Java代码的六种常见错误

白盒测试之逻辑覆盖 简单易懂~

白盒测试方法