软件测试实验一
姓名: 学号: 班级:
决策表测试案例
案例描述:
某程序可以输出某个日期的前一天,用函数 Prevdate 实现,请 设计出 Prevdate 函数的等价类,并做出其决策表测试用例。
年的取值在 1812年到 2016 年之间。
日的取值在 1 日到31 日之间
月的取值在 1 到 12 月之间
测试分析
等价类
(1)?分析各种输入情况,列出为输入变量?month?、?day?、?year?划分的有效等价类和无效等价类。?
?有效等价类year:{ 1812<=year<=2012}
month:{1<=month<=12}
day:{1<=day<=31}
其他情况则为无效等价类
(2)?month?变量的有效等价类为:?
M1:{前一个月为30天,且本月为31天,month=5,7,10,12}???
M2:?{前一个月为31天,且本月为30天,month=4,6,9,11 }?
M3:{前一个月为31天,且本月为31天,1月除外month=8}?????????
M4:{月份:month=1}?
M4:{月份:month=2}?
M4:{月份:month=3}?
(3)day?变量的有效等价类为:?
D1:?{日期:2<=day<=28}???????
D2: {日期:day=1}?
D3: {日期:day=29}?
D4: {日期:day=30}?
D5: {日期:day=31}?
(4)year?变量的有效等价类为:?
?Y1:{year是闰年}????????????
?Y2:{year不是闰年}??
决策表
实验代码:
#include
using namespace std;
int main(){
int year,month,day,x=0;//将x作为标记位
cout<
cin>>year>>month>>day;
if(year<1812||year>2012||day<0||day>31||month<0||month>12){
cout<
return 0;}
if((year%4==0&&year%100!=0)||(year%400==0)){
x=1;
}//闰年标记为1,否则为0
if(x==1&&month==3&&day==1){
cout<
return 0;}//闰年3.1则输出2.29
if(x==0&&month==3&&day==1){
cout<
return 0;}//平年3.1则输入2.28
if(month==1&&day==1){
cout<
return 0;}//1.1往前推一年,并为12.31
if((month==2||month==4||month==6||month==8||month==9||month==11)&&day==1){
cout<
return 0;}//日为1日且前一个月大,则输出前一个月的31日
if((month==5||month==7||month==10||month==12)&&day==1){
cout<
return 0;}//日为1日且前一个月小,则输出前一个月的30日
else
cout<
return 0;
}
部分测试结果: