一、 (论述题)为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖,并画出相应的程序流程图。
void DoWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3) && (z<10))
{
k=x*y-1;
j=(int)sqrt(k);
}
if((x==4)||(y>5)){
j=x*y+10;
}
j=j%3;
}
答案模板:
1.语句覆盖
输入:
预期输出:
2.判定覆盖
输入:
预期输出:
3.条件覆盖
输入:
预期输出:
4.判定/条件覆盖
输入:
预期输出:
5.条件组合覆盖
输入:
预期输出:
解答
程序流程图:
语句覆盖:
输入:x=4,y=6,z=9
预期输出:k=23,j=1
判断覆盖:
输入:x=4,y=6,z=9 x=2,y=5,z=20
预期输出:k=23,j=1 k=0,j=0
条件覆盖:
输入:x=4,y=6,z=9 x=2,y=5,z=20
预期输出:k=23,j=1 k=0,j=0
判定/条件覆盖:
输入:x=4,y=6,z=9 x=2,y=5,z=20
预期输出:k=23,j=1 k=0,j=0
条件组合覆盖:
输入:x=4,y=6,z=9 x=2,y=5,z=20 x=4,y=5 ,z=20 x=2,y=6 ,z=9
x=5,y=5,z=9
预期输出:k=23,j=1 k=0,j=0 k=0,j=0 k=0,j=1
k=24,j=1
二、 (论述题)请按照基本路径法为下面的程序设计测试用例。
void sort(int irecordnum, int itype)
1{
2 int x=0;
3 int y=0;
4 while(irecordnum-->0)
5 {
6 if(itype==0)
7 break;
8 else
9 if(itype==1)
10 x=x+10;
11 else
12 y=y+20;
13 }
14 }
要求:
(1)给以上代码画出控制流图。
(2)给出控制流图的环复杂度V(G)。
(3)写出独立路径。
(4)设计测试用例(模板如下)。
用例编号
测试数据
预期执行结果
测试路径
1
irecordnum=0, itype=0
x=0,y=0
4-14
解答
环路复杂度:4
独立路径:
1:
1->2->3->4->5->6->7->13->14
2:
1->2->3->4->5->6->8->9->10->13->14
3:
1->2->3->4->5->6->8->9->11->12->13->14
4:
1->2->3->4->13->14
测试用例:
用例编号
测试数据
预期执行结果
测试路径
1
irecordnum=3, itype=0
x=0,y=0
1->2->3->4->5->6->7->13->14
2
irecordnum=3, itype=1
x=10,y=0
1->2->3->4->5->6->8->9->10->13->14
3
irecordnum=3, itype=2
x=0,y=20
1->2->3->4->5->6->8->9->11->12->13->14
4
irecordnum=0, itype=0
x=0,y=0
1->2->3->4->13->14