白盒测试的覆盖方法

一、基本概念

1. 概念

  • 白盒测试:又称逻辑测试,需要了解程序内部逻辑结构、对所有逻辑路径进行测试。
  • 白盒测试分三大类:逻辑覆盖、循环覆盖、路径覆盖。

2. 原则

  • 一个模块中的所有独立路径至少被测试一次。
  • 所有逻辑值均需测试true和false两种情况。
  • 检査程序的内部数据结构,保证其结构的有效性。
  • 在取值的上、下边界及可操作范围内运行所有循环。

3. 优缺点

  • 优点:迫使测试人员去仔细思考软件的实现。可以检测代码中的每条分支和路径。揭示隐藏在代码中的错误。对代码的测试比较彻底。让软件最优化。
  • 缺点:昂贵。无法检测代码中遗漏的路径和数据敏感性错误。不验证规格的正确性。

二、语句覆盖

1. 基本概念

  • 设计若干测试用例(越少越好),执行程序,使程序中每个可执行语句至少被执行一次。
  • 顺序结构就从头至尾的测试,如果有分支、循环,需要用下面的方法,使所有语句被覆盖。
  • 语句覆盖率 = 可执行的语句总数/被评价到的语句数量 x 100%

举例说明: 

int foo(int a, int b)
{
    return a / b;
}

以上面的一段代码来看,可执行语句只有一条,对应的我们可以设计如下的测试用例:

TeseCase: a = 10, b =2 

可以看出来该测试用例代码覆盖率达到了100%,并且所有测试案例都通过,但当b=0时,会存在bug,却并未发现。

2. 优缺点

  • 直观地从源代码得到测试用例,无须细分每条判定表达式。
  • 只能针对程序逻辑中显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。

三、判定覆盖

1. 基本概念

  • 设计若干测试用例,执行程序,使程序中每个判断的取值分支至少经历一次,即判断真假值均被满足过。
  • 一个判定代表着程序的一一个分支,所以判定覆盖也被称为分支覆盖。

举例说明: 

if(a || b)
    执行语句1
else
    执行语句2

要达到这段程序的判断覆盖,我们可以设计以下测试用例

TeseCase1: a = true , b = true;
TeseCase2: a = false, b = false;

2. 优缺点

  • 判定覆盖比语句覆盖测试能力更强。且判定覆盖具和语句覆盖一样的简单性,无须细分每个判定就能得到测试用例。
  • 判定覆盖仍是弱的逻辑覆盖。往往大部分的判定语句是由多个逻辑条件组合而成(包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

四、条件覆盖

1. 基本概念

  • 设计若干测试用例,执行程序,要使每个判断中每个条件的可能取值至少满足一次。

举例说明: 

  

上图有两个判定表达式(A>1 AND B=0,A=2 OR X>1),每个判定表达式中有两个条件,为了做到条件覆盖,应选取测试数据使得在a点有A>1,A<=1,B=0,B!=0的表现,在b点有A=2,A!=2,X>1,X<=1的表现。可设置下面这样的测试用例:

TestCase1:A=2,B=0,X=4;
//满足A>1,B=0,A=2和X>1的条件,执行路径ace

TestCase2:A=1,B=1,x=1
//满足A<=1,B!=0,A!=2和X<=1的条件,执行路径abd

2. 优缺点

  • 比起判定覆盖,增加了对符合判定情况的测试。
  • 要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

五、判定条件覆盖

1. 基本概念

  • 判定-条件覆盖是判定和条件覆盖设计方法的交集。
  • 设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。

举例说明:

if(a>5 && b<0)
    执行语句1
else
    执行语句2

每个判定真假各一次,每个判定中的条件各取一次,如下: 

  • true :a>5 && b<0
  • false :a<=5 && b>=0

2. 优缺点

  • 判定/条件覆盖满足判定覆盖准则和条件覆盖准则。
  • 未考虑条件的组合情况。

六、条件组合覆盖

1. 基本概念

  • 设计足够的测试用例,使得判断中每个条件的所有可能组合至少出现一次,并且每个判断本身的判定结果也至少出现一次。
  • 与条件覆盖的差别是,它不仅要求每个条件都出现“真”与“假”两种结果,且要求让这些结果的所有可能组合都至少出现一次。

举例说明:

if(a>5 && b<0)
    执行语句1
else
    执行语句2

对于a>5 && b<0,存在a>5,a<=5和b<0,b>=0分别各两种情况,一共是2*2=4种

  • a>5 && b<0
  • a>5 && b>=0
  • a<=5 && b<0
  • a<=5 && b>=0

2. 优缺点

  • 多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。
  • 线性地增加了测试用例的数量。

七、基本路径覆盖

1. 基本概念

  • 选取足够多的测试数据,使程序的每条可能路径都至少执行一次。

2. 优缺点

  • 比前面五种的覆盖面都广。
  • 需要设计大量、复杂的测试用例。而且在有些情况下,一些执行路径是不可能被执行的。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值