實(shí)驗(yàn)內(nèi)容及結(jié)果:
題目:某程序的功能規(guī)格說明如下:輸入一個日期(*年*月*日),通過計(jì)算輸出該日期的前一天日期(比如,輸入1999-3-6,則輸出1999-3-5)。設(shè)所接收的輸入日期的有效范圍為1900年到2050年之間的某個日期。當(dāng)輸入日期無效時,輸出日期值規(guī)定為:年為0,月和日與輸入日期值相同(比如,輸入1990-5-32,則輸出0-5-32)。
1、編程實(shí)現(xiàn)上述功能。程序代碼如下:
#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、根據(jù)功能規(guī)格說明,綜合使用等價類劃分法和邊界值分析法,進(jìn)行黑盒測試用例設(shè)計(jì)。并使用所設(shè)計(jì)的測試用例測試你的程序,最后對測試結(jié)果進(jìn)行分析總結(jié)。
???(1)分析程序的功能規(guī)格說明,列出有效等價類和無效等價類,同時列出可能的邊界情況;
- 有效等價類及邊界情況如下:
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)設(shè)計(jì)測試用例覆蓋所有的等價類及邊界情況,并執(zhí)行測試用例。根據(jù)執(zhí)行結(jié)果分析程序的功能是否符合要求,完成下表:
-
測試用例編號
輸入數(shù)據(jù)
覆蓋情況
預(yù)期輸出結(jié)果
實(shí)際輸出結(jié)果
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文章來源地址http://www.zghlxwxcb.cn/news/detail-427076.html文章來源:http://www.zghlxwxcb.cn/news/detail-427076.html
0-2-30
到了這里,關(guān)于軟件工程實(shí)驗(yàn)二----測試用例設(shè)計(jì)NEFU的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!