测试用
例
|
x
|
y
|
z
|
执行语句路径
|
test1
|
2
|
-1
|
1
|
acd
|
test2
|
-3
|
1
|
-1
|
abd
|
test3
|
3
|
-1
|
5
|
ace
|
test4
|
3
|
1
|
-1
|
abe
|
条件覆盖(Condition Coverage)指的是设计足够多的测试用例,使判定语句中的每个逻辑条件取真值与取假值至少出现一次。
例如,对于判定语句if(a>1 OR c<0)中存在a>1、c<0两个逻辑条件,设计条件覆盖测试用例时,要保证a>1、c<0的“真” “假”值至少出现一次。
以图3.1.1节程序为例,设计条件覆盖测试用例,在该程序中,有2个判定语句,每个判定语句有2个逻辑条件,共有4个逻辑条件,使用标识符标识各个逻辑条件取真值与取假值的情况,如下表。
条件
1
|
条件标记
|
条件
2
|
条件标记
|
x>0
|
S1
|
x>2
|
S3
|
x<0
|
-S1
|
x<2
|
-S3
|
y<0
|
S2
|
z>0
|
S4
|
y>0
|
-S2
|
z<0
|
-S4
|
测试用例
|
x
|
y
|
z
|
条件标记
|
执行路径
|
Test1
|
3
|
1
|
5
|
S1、-S2、S3、S4
|
abe
|
Test2
|
-3
|
1
|
-1
|
-S1、-S2、-S3、-S4
|
abd
|
Test3
|
3
|
-1
|
1
|
S1、S2、S3、-S4
|
ace
|
测试用例
|
x
|
y
|
z
|
条件标记
|
条件
1
|
条件
2
|
执行路径
|
test1
|
3
|
1
|
5
|
S1、-S2、S3、S4
|
0
|
1
|
abe
|
test2
|
-3
|
1
|
-1
|
-S1、-S2、-S3、-S4
|
0
|
0
|
abd
|
test3
|
3
|
-1
|
1
|
S1、S2、S3、-S4
|
1
|
1
|
ace
|
序号
|
组合
|
含义
|
1
|
S1、S2、S3、S4
|
x>0成立,y<0成立;x>2成立,z>0成立。
|
2
|
-S1、S2、S3、S4
|
x>0不成立,y<0成立;x>2成立,z>0成立。
|
3
|
S1、-S2、S3、S4
|
x>0成立,y<0不成立;x>2成立,z>0成立。
|
4
|
S1、S2、-S3、S4
|
x>0成立,y<0成立;x>2不成立,z>0成立。
|
5
|
S1、S2、S3、-S4
|
x>0成立,y<0成立;x>2成立,z>0不成立。
|
6
|
-S1、-S2、S3、S4
|
x>0不成立,y<0不成立;x>2成立,z>0成立。
|
7
|
-S1、S2、-S3、S4
|
x>0不成立,y<0成立;x>2不成立,z>0成立。
|
8
|
-S1、S2、S3、-S4
|
x>0不成立,y<0成立;x>2成立,z>0不成立。
|
9
|
S1、-S2、-S3、S4
|
x>0成立,y<0不成立;x>2不成立,z>0成立。
|
10
|
S1、S2、-S3、-S4
|
x>0成立,y<0成立;x>2不成立,z>0不成立。
|
11
|
S1、-S2、S3、-S4
|
x>0成立,y<0不成立;x>2成立,z>0不成立。
|
12
|
-S1、-S2、-S3、S4
|
x>0不成立,y<0不成立;x>2不成立,z>0成立。
|
13
|
-S1、-S2、S3、-S4
|
x>0不成立,y<0不成立;x>2成立,z>0不成立。
|
14
|
S1、-S2、-S3、-S4
|
x>0成立,y<0不成立;x>2不成立,z>0不成立。
|
15
|
-S1、S2、-S3、-S4
|
x>0不成立,y<0成立;x>2不成立,z>0不成立。
|
16
|
-S1、-S2、-S3、-S4
|
x>0不成立,y<0不成立;x>2不成立,z>0不成立。
|
序号
|
组合
|
测试用例
|
条件
1
|
条件
2
|
覆盖路径
|
||
x
|
y
|
z
|
|||||
test1
|
S1、S2、S3、S4
|
3
|
-1
|
5
|
1
|
1
|
ace
|
test2
|
S1、-S2、S3、S4
|
3
|
1
|
5
|
0
|
1
|
abe
|
test3
|
S1、S2、-S3、S4
|
1
|
-1
|
3
|
1
|
1
|
ace
|
test4
|
S1、S2、S3、-S4
|
3
|
-1
|
1
|
1
|
1
|
ace
|
test5
|
-S1、S2、-S3、S4
|
-5
|
-2
|
1
|
0
|
1
|
abe
|
test6
|
S1、-S2、-S3、S4
|
1
|
1
|
1
|
0
|
1
|
abe
|
test7
|
S1、S2、-S3、-S4
|
1
|
-1
|
1
|
1
|
0
|
acd
|
test8
|
S1、-S2、S3、-S4
|
6
|
1
|
-2
|
0
|
1
|
abe
|
test9
|
-S1、-S2、-S3、S4
|
-1
|
1
|
1
|
0
|
1
|
abe
|
test10
|
S1、-S2、-S3、-S4
|
1
|
1
|
-2
|
0
|
0
|
abd
|
test11
|
-S1、S2、-S3、-S4
|
-2
|
-1
|
-3
|
0
|
0
|
abd
|
test12
|
-S1、-S2、-S3、-S4
|
-3
|
1
|
-1
|
0
|
0
|
abd
|
编号
|
测试用例
|
路径
|
预期输出
|
||
A
|
B
|
C
|
|||
test1
|
6
|
6
|
6
|
1-2-3-4-11
|
等边三角形
|
test2
|
6
|
6
|
8
|
1-2-5-6-11
|
等腰三角形
|
test3
|
3
|
4
|
5
|
1-2-7-8-11
|
一般三角形
|
test4
|
3
|
3
|
6
|
1-9-10-11
|
不构成三角形
|
测试用例
|
数据输入
|
预期输出结果
|
T1
|
1,1
|
1
|
T2
|
1,-1
|
-1
|
T3
|
-1,-1
|
1
|
T4
|
-1,1
|
-1
|
T5
|
1,0
|
错误
|
T6
|
-1,0
|
错误
|
T7
|
0,0
|
错误
|
T8
|
0,1
|
0
|
T9
|
0,-1
|
0
|
测试名称
|
测试对象
|
测试方法
|
单元测试
|
模块功能(函数、类)
|
白盒测试
|
集成测试
|
接口测试(数据传递)
|
黑盒测试和白盒测试
|
系统测试
|
系统测试(软件、硬件)
|
黑盒测试
|
验收测试
|
系统测试(软件、硬件、用户体验)
|
黑盒测试
|
#include int main() {int i,mid,a[3];for(i=0;i<3;i++)scanf("%d",&a[i]);mid=a[2];mid=a[1];mid=a[1];}else{if(a[0]>a[1])mid=a[1];else if(a[0]>a[2])mid=a[0];}printf("中间值是:%d\n",mid);return 0;}
测试用例
|
测试数据
|
预期输出结果
|
T1
|
1,1,2
|
1
|
T2
|
1,2,3
|
2
|
T3
|
3,2,1
|
2
|
T4
|
3,3,3
|
3
|
T5
|
6,4,5,
|
5
|
T6
|
6,8,4
|
6
|
T7
|
8,4,9
|
8
|
#include #define LINE() fprintf(__POINT__,"%3d",__LINE__)FILE *__POINT__;int i,mid,a[3];int main() {if((__PROBE__=fopen("test.txt","a+"))==NULL)fprintf(stderr,"不能打开test.txt文件");for(LINE(),i=0;i<3;LINE(),i++)LINE(),scanf("%d",&a[i]);LINE(),mid=a[2];{LINE(),mid=a[1];LINE(),mid=a[1] ;elsemid=a[0] ;} else{if(LINE(),a[0]>a[1])LINE(),mid=a[1];else if(LINE(),a[0]>a[2])LINE(),mid=a[0];} LINE(),printf("中间值是:%d\n",mid);fprintf(__POINT__,"\n");fclose(__POINT__);return 0;}