阅读下列说明,回答问题1至问题3。
【说明】
以下代码由C语言书写,能根据指定的年、月计算当月所含天数。
int GetMaxDay( int year, int month )
{
int maxday = 0;
if ( month >= 1 && month <= 12 )
{
if ( month == 2 )
{
if ( year % 4 == 0 )
{
if ( year % 100 == 0 )
{
if ( year % 400 == 0 )
maxday = 29;
else
maxday = 28;
}
else
maxday = 29;
}
else
maxday = 28;
}
else
{
if ( month == 4 || month == 6 || month == 9 || month == || )
maxday = 30;
else
maxday = 31;
}
}
return maxday; }
【问题3】 假设year的取值范围是1000<year<2001,请使用基本路径测试法为变量year、 month设计测试用例(写出year取值、month取值、maxday预期结果),使之满足基本路径覆盖要求。 |
参考答案:
解析:(用例编号可以不写)
用例编号 | year取值 | month取值 | maxday预期结果 |
1 | 1001~2000这间任意整数 | [1、2]之外的任意整数 | 0 |
2 | 1001~2000之间不能被4整除的任意整数,如1001、1002、1003等 | 2 | 28 |
3 | 1001~2000之间能被4整除但不能被100不止除的任意整流器数,如1004、1008、1012、1016等 | 2 | 29 |
4 | 1001~2000之间能被100整除但不能被400整除的任意整数,如1100、1300、1400、1500、1700、1800、1900等 | 2 | 28 |
5 | 1001~2000之间能被400整除的任意整数,如1200、1600、2000等 | 2 | 29 |
6 | 1001~2000之间任意整数 | 1、3、5、7、8、10、12中的任意一个 | 31 |
7 | 1001~2000之间任意整数 | 4、6、9、11中的任意一个 | 30 |
[分析]: 考查基本路径测试法的应用。
路径测试法要求满足基本路径覆盖的要求。
在进行程序的基本路径测试时,从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。独立路径是指包括一组以前没有处理的语句或条件的一条路径。例如针对本题所对应的控制流图中,一组独立的路径如下。
·path1:year取值1001~2000之间任意整数,month取值13或14。
·path2:year取值1001~2000之间不能被4整除的整数,month取值2。
·path3:year取值1001~2000之间能被4整除但不能被100整除的整数,month取值2。
·path4:year取值1001~2000之间能被100整除但不能被400整除的整数,month取值2。
·path5:year取值1001~2000之间任意整数,month取值2。
·path6:year取值1001~2000之间任意整数,month取值1、3、5、7、8、10或12。
·path7:year取值1001~2000之间任意整数,month取值4、6、9或11。
路径path1、path2、path3、path4、path5、path6以及path7组成一个基本路径集。只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次。