逻辑覆盖

发布于 2021-07-03  17 次阅读


一、问题实例

  看个例子:

if (A and B)    #Judge 1
    # do sth 1
if (C or D)     #judeg 2
    # do sth 2

二、覆盖

2.1 语句覆盖

  让上述的DS1和DS2都能执行即可:

  • A(ture), B(true), C(true), D(true)

2.2 判定覆盖

  每个判定分支至少经历一次真、假分支。对于上述条件,我们只要让J1和J2都存在真、假各一次即可:

  • A(true), B(true), C(true), D(true)
  • A(false), B(false), C(false), D(false)

  其中各参数值可以变化,只要让J1和J2都进行过真假判断即可。

2.3 条件覆盖

  让条件ABCD都能取到一次真假即可,即A应该取到true和false两种,其他的条件也一样:

  • A(true), B(true), C(true), D(true)
  • A(false), B(false), C(false), D(false)

  这样我们就给所有条件取了t/f,满足条件覆盖。

2.4 判定条件覆盖

  同时满足判定覆盖和条件覆盖。

  • A(true), B(true), C(true), D(true) # 所有条件ture覆盖,同时满足J1真、J2真
  • A(false), B(false), C(false), D(false) # 所有条件false覆盖,同时满足J1假、J2假

2.5 条件组合覆盖

  判定条件之间的笛卡尔积,即A{true, false} x B{true, false} x c{true, false} x D{true, false}

  1. A(true), B(true), C(true), D(true)
  2. A(true), B(true), C(true), D(false)
  3. A(true), B(true), C(false), D(true)
  4. A(true), B(true), C(true), D(false)

2.6 路径覆盖

  判定分支J之间的笛卡尔积,J1{true, false} x J2{ture, fasle}:

  • A(true), B(true), C(true), D(true) # 满足(true, true)
  • A(true), B(true), C(false), D(false) # 满足(true, false)
  • A(false), B(false), C(true), D(true) # 满足(false, true)
  • A(false), B(false), C(false), D(false) # 满足(false, false)