计划测试_白盒测试

发布时间 2023-03-22 21:09:11作者: kingwzun

穷举测试
image
一次循环中,从程序入口到出口,假设有5条路径,循环次数假定为20次。
穷举测试总路径数为: \(5^{20}=9.53674E+13\)
假定每执行1次测试花费1ms,那么穷举测试时间为: 3024.1年

如何实现路径压缩、问题简化

逻辑覆盖 和 基本路径测试

逻辑覆盖

image

逻辑覆盖的类型

  1. 语句覆盖:每条可执行语句
  2. 判定(分支)覆盖:每条分支路径
  3. 条件覆盖:每个判断的每个条件的所有可能取值
  4. 判定/条件覆盖:每个分支路径和每个判断的每个条件的所有可能取值
  5. 条件组合覆盖:每个判断的所有可能的条件取值组合
  6. 路径覆盖:每条可能的路径

:判定 就是选择(菱形框);条件是 选择的条件(菱形框内的条件)

由于类型容易混淆,因此需要分类设计、严卡概念,为了方便理解,对分类在进行分类:

案例程序3.1:连锁选择结构

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

注意:

  1. 不是由程序推出的测试用例
  2. 测试用例没有特殊要求,随意取值

(一)、只考虑整体

  1. 语句覆盖:每条可执行语句

  2. 判定(分支)覆盖:每条分支路径

  3. 路径覆盖:每条可能的路径

(二)、只考虑局部

  1. 条件覆盖
  2. 条件组合覆盖

(三)、兼顾整体局部

  1. 判定/条件覆盖

(一)、只考虑整体

1.语句覆盖:每条可执行语句
image

优点:

缺点:

  • 无法预测隐藏条件和分支
  • 无法检查出条件语句错误
  • 无法检查出逻辑运算错误
  • 无法检查出循环语句错误

2. 判定覆盖:每个判定的所有可能取值
判定覆盖比语句覆盖严格,能消除隐式分支,但是仍不能保证判断条件的正确性。

对于两个连锁选择结构有两种情况:

  1. 同真同假(发现错误能力较弱)
    image

  2. 交叉取值(发现错误能力较强)
    image

优点

  1. 比语句覆盖具有更强的测试能力;
  2. 具有简单性,无须细分每个判定即可得到测试用例

缺点
往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径

3. 路径覆盖:每条可能的路径
对于连锁选择结构就是覆盖所有的路径:
image

优点:根据多缺陷,覆盖完全。
缺点:效率低。

(二)、只考虑局部

1. 条件覆盖:每个判定中每个条件的所有可能取值关注xxxx关系,不考虑条件C1,C2间的关系

对于两个连锁选择结构有两种情况:

  1. 同真同假(发现错误能力较弱)
    image
    关注的是 D1和D2 的T和F,对于c1、c2、c3、c4取值随意。

  2. 交叉取值(发现错误能力较强)
    image

优点:增加了对符合判定情况的测试,增加了测试路径
缺点:需要足够多的测试用例,但条件覆盖并不能保证分支覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果

注:条件覆盖和判定覆盖 两者不是包含关系,但是有交集;两者各有优点和缺点

2. 条件组合覆盖:每个判断的所有可能的条件取值组合
image
image

优点:同时满足判定覆盖、条件覆盖和判定/条件覆盖准则
缺点:线性的增加了测试用例的数量

满足条件组合覆盖的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准

(三)、兼顾整体局部

判定/条件覆盖 同真同假
image
image

优点:同时满足判定覆盖和条件覆盖准则,弥补了二者的不足
缺点:未考虑条件的组合情况

由判定覆盖和条件覆盖的综合特性以及逻辑与和逻辑或本身的特性决定,该准则并不一定会发现逻辑表达式中的错误(与、或)