一、问题实例
看个例子:
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}
- A(true), B(true), C(true), D(true)
- A(true), B(true), C(true), D(false)
- A(true), B(true), C(false), D(true)
- 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)
Comments | NOTHING