本文目的主要为软考准备的复习内容。
实例代码:
int method(bool a, bool b, bool c)
{
1 int x;
2 x=0;
3 if(a && (b || c))
4 x=1;
5 return x;
}
1、语句覆盖:每条语句都至少执行一次。即1,2,3,4,5都要被执行。
可选测试用例:
a=1, b=1, c=1 【1,2,3,4,5】
2、判定覆盖:每个分支都要至少执行一次,即if判定为真,为假各一次。
可选测试用例:
a=1, b=1, c=1 【1,2,3,4,5】
a=0, b=1, c=1 【1,2,3,5】
3、条件覆盖:每一个单独条件至少为真,为假各一次。这里条件指a,b,c
可选测试用例:
a=1, b=1, c=1 【1,2,3,4,5】
a=0, b=0, c=0 【1,2,3,5】
4、条件判定覆盖:判定覆盖 + 条件覆盖 - 重复用例
可选测试用例:
a=1, b=1, c=1 【1,2,3,4,5】
b=0, b=0, c=0 【1,2,3,5】
5、条件组合覆盖:各条件之间的真假值交叉组合一次;若有n各条件,则有2的n次方个组合用例。
测试用例组合:
a=1, b=1, c=1
a=1, b=1, c=0
a=1, b=0, c=1
a=1, b=0, c=0
a=0, b=1, c=1
a=0, b=1, c=0
a=0, b=0, c=1
a=0, b=0, c=0
6、修正条件判定覆盖:在条件判定的基础上进行完善,对单个条件的真假值对应的判定结果也有要求。即a为真时,总的判定条件为真,a为假时整个判定条件为假;而且两次取值中b、c的真假值保持原值不变。即一个条件改变影响总的结果。
可选测试用例:
a=1, b=1, c=1, a&&(b||c)=1
a=1, b=1, c=0, a&&(b||c)=1
a=1, b=0, c=1, a&&(b||c)=1
a=1, b=0, c=0, a&&(b||c)=0
a=0, b=1, c=1, a&&(b||c)=0
a=0, b=1, c=0, a&&(b||c)=0
a=0, b=0, c=1, a&&(b||c)=0
a=0, b=0, c=0, a&&(b||c)=0
上述用例中符合条件a的用例组合为:{1,5},{2,6},{3,7}中的任意一组
符合条件b的用例组合为:{2,4}
符合条件c的用例组合为:{3,4}
所以总的用例组合为:{1,2,3,4,5}
选择标准以a为例:
a=1时,a&&(b||c)=1;符合此条件的用例有:1,2,3
a=0时,a&&(b||c)=0;符合此条件的用例有:5,6,7,8
a=1与a=0时b和c的真假值对应相等的条件有:
{1,5};b1=b5=1,c1=c5=1
{2,6};b2=b6=1,c2=c6=0
{3,7};b3=b7=0,c3=c7=0