实验内容及结果:
题目:某程序的功能规格说明如下:输入一个日期(*年*月*日),通过计算输出该日期的前一天日期(比如,输入1999-3-6,则输出1999-3-5)。设所接收的输入日期的有效范围为1900年到2050年之间的某个日期。当输入日期无效时,输出日期值规定为:年为0,月和日与输入日期值相同(比如,输入1990-5-32,则输出0-5-32)。
1、编程实现上述功能。程序代码如下:
#include <stdio.h>
#include <stdlib.h>
int a=0,b=0,c=0;
int isrun(int year){
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else return 0;
}
int isrightimport(int year,int month,int day){
if(day<1)return 0;
if(month<1||month>12)return 0;
if(year>2050||year<1900)return 0;
if(month==2&&day>28||month==2&&day>29)return 0;
if((month==4||month==6||month==9||month==11)&&day>30)return 0;
if((month==1||month==3||month==5||month==8|month==10||month==12)&&day>31)return 0;
return 1;
}
void predate(int year,int month,int day){
if(isrightimport(year,month,day)==0){
printf("0-%d-%d\n",month,day);
}
else{
if(day>=2){
printf("%d-%d-%d\n",year,month,day-1);
}
else{
if(month==5||month==7||month==10||month==12){
printf("%d-%d-%d\n",year,month-1,30);
}
else if(month==2||month==4||month==6||month==8||month==9||month==11)
{
printf("%d-%d-%d\n",year,month-1,31);
}
else if(month==3){
if(isrun(year)==1)
printf("%d-%d-%d\n",year,2,29);
else
printf("%d-%d-%d\n",year,2,28);
}
else if(month==1){
printf("%d-%d-%d\n",year-1,12,31);
}
}
}
}
int main()
{
int i=0;
char str[12],c;
while(scanf("%s",str)){
int year=0,month=0,day=0;
while(str[i]!='-')
{
year=year*10+(str[i]-'0');
i++;
}
i++;
while(str[i]!='-'){
month=month*10+(str[i]-'0');
i++;
}
i++;
while(str[i]!='\0'){
day=day*10+(str[i]-'0');
i++;
}
predate(year,month,day);
i=0;
}
return 0;
}
2、根据功能规格说明,综合使用等价类划分法和边界值分析法,进行黑盒测试用例设计。并使用所设计的测试用例测试你的程序,最后对测试结果进行分析总结。
(1)分析程序的功能规格说明,列出有效等价类和无效等价类,同时列出可能的边界情况;
- 有效等价类及边界情况如下:
D1={2<=day<=本月的最后一天}
D2={一个月的第一天}//day=1;
D3={1月1日}//day=1 month=1;
M1={1=<month<=12}
M2={前一个月是30天}//month=5,7,10,12
M3{前一个月是31的月份}//month=2,4,6,8,9,11
M4={前一个月是二月份}//month=3
Y1={1900<=year<=2050}
Y2={平年}//2月份28天
Y3={闰年}//2月份29天
- 无效等价类及边界情况如下:
D4={day<1}
D5={day>30,month=4,6,9.11}
D6={day>31,month=1,3,5,8,10,12}
D7={day>28,month=2,平年}
D8={day>29,month=2,闰年}
M5={month<1}
M6={month>12}
Y4={year<1900}
Y5={year>2050}
(3)设计测试用例覆盖所有的等价类及边界情况,并执行测试用例。根据执行结果分析程序的功能是否符合要求,完成下表:
-
测试用例编号
输入数据
覆盖情况
预期输出结果
实际输出结果
1
2018-4-27
有效等价类D1,M1,Y1
2018-4-26
2018-4-26
2
2018-4-1
有效等价类D2,M1,M3,Y1
2018-3-31
2018-3-31
3
2018-1-1
有效等价类D3,M1,Y1
2017-12-31
2017-12-31
4
2018-5-1
有效等价类D2,M2,Y1
2018-4-30
2018-4-30
5
2018-3-1
有效等价类D2,M4,Y2
2018-2-28
2018-2-28
6
2020-3-1
有效等价类D2,M4,Y3
2020-2-29
2020-2-29
7
2018-4-0
无效等价类D4
0-4-0
0-4-0
8
2018-4-32
无效等价类D5
0-4-32
0-4-32
9
2018-0-27
无效等价类M5
0-0-27
0-0-27
10
2018-13-27
无效等价类M6
0-13-27
0-13-27
11
0-4-27
无效等价类Y4
0-4-27
0-4-27
12
20000-4-27
无效等价类Y5
0-4-27
0-4-27
13
2018-4-35
无效等价类D6
0-4-35
2018-4-35
14
2018-2-29
无效等价类D7
0-2-29
0-2-29
15
2020-2-30
无效等价类D8
0-2-30文章来源地址https://www.toymoban.com/news/detail-427076.html文章来源:https://www.toymoban.com/news/detail-427076.html
0-2-30
到了这里,关于软件工程实验二----测试用例设计NEFU的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!