1.语句覆盖
void main()
{
float A,B,X;
scanf(“%f%f%f”,&A,&B,&X);
if((A>1)&&(B==0))
X=X/A;
if((A==2)||(X>1))
X=X+1;
printf(“%f”,X);
}
语句覆盖:是一个比较弱的测试标准,设计若干测试用例,使得程序中每个可执行语句至少都能被执行一次
使程序中每个语句至少执行一次,设计一个能通过路径ace的例子就可以了
测试用例输入数据: A=2,B=0,X=3
2.判定覆盖:使得程序中每个分支至少都获得一次“真值”和“假值”,又称分支覆盖。是一个比“语句覆盖”稍强的测试标准
判定覆盖
void main()
{
float A,B,X;
scanf(“%f%f%f”,&A,&B,&X);
if((A>1)&&(B==0))
X=X/A;
if((A==2)||(X>1))
X=X+1;
printf(“%f”,X);
}
用例设计:
路径acd
输入用例数据:
A= 3 B=0 X=1
路径abe
输入用例数据:
A= 2 B=1 X=3
用例设计(还可以是)
路径abd
路径ace
3.条件覆盖:设计若干测试用例,使得每个判定中每个条件的可能取值至少满足一次
void main()
{
float A,B,X;
scanf(“%f%f%f”,&A,&B,&X);
if((A>1)&&(B==0))
X=X/A;
if((A==2)||(X>1))
X=X+1;
printf(“%f”,X);
}
4.条件判定覆盖定义
条件判定覆盖:设计若干测试用例,使得判定中所有条件可能取值至少执行一次,同时,使得所有判定的可能至少执行一次
5.条件组合覆盖定义
条件组合覆盖:设计若干测试用例,使得判定中条件的各种组合都至少执行一次。
A>1 B=0 (1)
A>1 B=0 (2)
A<=1 B=0 (3)
A<=1 B=0 (4)
A=2 X>1 (5)
A=2 X<=1 (6)
A=2 X>1 (7)
A=2 X<=1 (8)
(1,5) (a,c,e) 输入数据:A=2 B=0 X=4
(2,6) (a,b,e) 输入数据:A=2 B=1 X=1
(3,7) (a,b,e) 输入数据:A=1 B=0 X=2
(4,8) (a,b,d) 输入数据:A=1 B=1 X=1
内容总结
程序结构分析
顺序、判定、循环、嵌套判定、嵌套循环
对于判定的测试
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖
例题: 对判定测试的练习:根据如下代码,画出程序流程图(标注编号),写出语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖;
A void fun(int X ,int A ,int B){
- if((A < 4)&&(B = 5)){
- X = X / A;
}
- if((A = 2) || (X > 1)){
- X = X + 1;
}
}
书写要求:
语句覆盖:输入数据是……,备注:执行了某某语句;
判定覆盖:输入数据是……,备注:执行了哪些分支(画图时,标注上编号);
条件覆盖:输入数据是……,备注:执行了哪些条件为真,哪些条件为假;
等等,每条测试用例通过写备注,让阅读这一下子能明白每条测试用例的设计目的;