实验四 基本路径测试用例设计方法
1、 实验目的
(1) 理解控制流图并能绘制;
(2) 掌握程序环路复杂度的计算方法;
(3) 能够找出程序中的基本路径;
(4) 能够使用基本路径测试法设计测试用例。
2、实验预习
基本路径测试也被称为独立路径测试方法,是在程序控制流图的基础上,通
过分析控制结构的环路复杂性,导出可执行的独立路径集合,从而设计出相应的
测试用例,设计出的测试用例要保证被测程序的每条可执行的独立路径都至少被
执行一次。
2、 实验内容及要求
阅读下列程序代码,根据指定的年、月计算当月所含天数。
int GetMaxDay()
{
int maxday = 0;
if (month >= 1 && month <= 12)
{
if (month == 2)
{
if
{
(year % 4 == 0)
if (year % 400 == 0)
maxday = 29;
else
maxday = 28;
}
else
maxday = 28;
}
else
{
if (month == 4 || month == 6 || month == 9 || month == 11)
maxday = 30;
else
maxday = 31;
}
}
}
要求绘制出控制流图,计算控制流图的环路复杂度,使用基本路径测试法为变量
year、month 设计测试用例,使之满足基本路径覆盖要求,设计测试程序,给出
测试结果。
4、实验总结
(1) 请绘制对应的 NS 图,估算最少测试用例数;
(2) 基本路径覆盖的测试步骤是怎样的;
解:
3.(1) 程序流程图如下
O
开始
Maxday = 0
A
no
B
month >= 1 && month <= 12
yes
C
month == 2
yes
no
no
D
year % 4 == 0
yes
no
no E
year % 400 == 0
H
month == 4 || month == 6||
month == 9 || month == 11
I
yes
maxday = 30
F
maxday = 28
G yes
maxday = 29
J
maxday = 31
L
maxday = 28
K
结束
控制流图如下:
O
A
B
C
G
D
3
H
I
2
E
J
4
K
L
0
1
F
由 V(G)=e-n+1=23-18+1=6
6 条独立路径为:
Path1=OAB0134K
Path2=OABCDL0134K
Parh3=OABCDEF134K
Path4= OABCDEG34K
Path5= OABCHJ24K
Path6= OABCHI24K
测试用例表(1900= 1 && month <= 12)
{
if (month == 2)
{
(year % 4 == 0)
if (year % 400 == 0)
maxday = 29;
else
maxday = 28;
if
{
}
else
maxday = 28;
}
else
{
if (month == 4 || month == 6 || month == 9 || month == 11)
maxday = 30;
else
maxday = 31;
}
}
return
maxday;
}
int _tmain(int argc, _TCHAR* argv[])
{
int i, maxday=0;
int test[6][2]={{1960,0},{1991,2},{1992,2},{2000,2},{1960,6},{1960,7}};
/* printf("请输入所测试的年份和月份:");
scanf("%d%d",&year,&month);
maxday=GetMaxDay();
printf("%d %d 的最大日期为%d",year,month,maxday);*/
for(i=0;i<6;i++)
{
year=test[i][0];
month=test[i][1];
maxday=GetMaxDay();
printf("%d %d 的最大日期为%d\n",year,month,maxday);
}
system("pause");
return 0;
}
运行结果:
4.(1)该实验 NS 图如下
month >= 1 && month <= 12
Maxday = 0
NO
month == 2
year % 4 == 0
YES
YES
YES
NO
month == 4 || month == 6||
month == 9 || month == 11
YES
NO
NO
year % 4 00== 0
YES
NO
maxday = 29 maxday = 28
maxday = 28 maxday = 30 maxday = 31
由上图可得出最小用例数为:6。
print maxday
4.(2) 基本路径覆盖的测试步骤:
A、导出程序流程图的拓扑结构——流图(控制流图)。
B、计算流图的环路复杂度。借助环路复杂度可以确定程序基本路径集合中
的基本路径条数。
C、利用“主路径+转向”的策略确定基本路径集合。首先从流图的入口出发,
到出口结点结束,寻找一条包含尽可能多分支结点的路径记录下来作为主路径;
然后以主路径为基础,依次对各个结点转向到另外一条未执行分支以产生新的路
径,但是注意每次只改变一个分支结点的路径选择。当所有分支结点的可选路径
都进行了转向覆盖后,这时得到的路径集合就是基本路径集合。
D、剔除不可执行路径,补充其它重要路径。如果各个分支条件判定变量存
在前后依赖关系,则可能导致前面得到的基本路径集合中存在不可执行路径。因
此需要对基本路径集合进行进一步分析,找出不可执行路径并将其剔除,然后补
充路径以覆盖由于剔除不可执行路径而遗漏的路径。
E、根据路径集合确定测试用例,填入测试数据。