问答题
针对以下C语言程序,请按要求回答问题。
下面是一个程序段(C语言),试设计基本路径测试的测试用例,设计出的测试用例要保证每一个基本独立路径至少要执行一次。
函数说明:当i_flag=0;返回i_count+100
当i_flag=1;返回i_count*10
否则返回i count*20
输入参数:int i_count int i_flag
输出参数:int i_return
程序代码如下:
1 int Test(int i_count, int i_flag)
2 {
3 int
i_temp=0;
4 while(i_count>0)
5 {
6
if(0==i_flag)
7
{
8
i_temp=i_count+100;
9
break;
10 }
11
else
12 {
13 if(1==i_flag)
14
{
15 i_temp=i_temp+10;
16 }
17
else
18 {
19
i_temp=i_temp+20;
20
}
21 }
22
i_count--;
23 }
24
return i_temp;
25 }
【正确答案】
【答案解析】第一步,根据上述控制流图计算该程序的环路复杂性。
由图可以看出,判定结点数为3,边数为10,结点总数为8,故
V(G)=10-8+2=4
或V(G)=3+1=4
第二步,根据环路复杂度为4,可确定4条基本独立路径。
Path1:4—24
Path2:4—6—8—24
Path3:4—6—13—15—22—4—24
Path4:4—6—13一19—22—4—24。
第三步,设计测试用例。
根据上面4条基本独立路径,可以设计测试用例如下:
测试用例1:
输入数据:i_count=0,或者是i_count<0的某个值。
预期输出结果:i_temp=0。
测试用例2:
输入数据:i_count=1,i_flag=0。
预期输出结果:i_temp=101。
测试用例3:
输入数据:i_count=1,i_flag=1。
预期输出结果:i_temp=10。
测试用例4:
输入数据:i_count=1,i_flag=2。
预期输出结果:i_temp=20。
但这些测试用例是可以简化的,由于路径path1是path4的真子集,所以path1是可以不要的。故针对该程序最少的测试用例数为3,即上述测试用例2,测试用例3,测试用例4。
[解析] 首先根据程序的源代码,画出控制流图。然后通过控制流图可以计算出该程序的复杂度,找出所有的独立路径,根据基本路径测试法设计测试用例。