黑盒测试实验报告
- 格式:pdf
- 大小:250.31 KB
- 文档页数:5
黑盒测试实验报告
一、实验内容
计算日期是星期几
已知公元1年1月1日是星期一。请编写一个程序,只要输入年月日,就能自动回答当天是星期几。
要求:
为测试该程序的方便,请将计算星期的算法尽量放入一个函数中,输入和输
出检查可用其它函数来处理。 为简单起见,不考虑公元前的日期。
提示:
(a)解答思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:
总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数
(b)闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)
(1)分析各种输入情况,结合程序输出结果,进行等价类划分,并给出详
细测试用例 (2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例
(3)决策表测试法
①列出输入变量month、 day、 year的有效等价类;(条件桩) ②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)
③画出决策表(简化) ④根据决策表,给出详细测试用例
二、实验要求
(1)根据题目要求编写测试用例
(2)撰写实验报告 (3)有关的实现程序请附到实验报告中
(4)实验报告命名规则:学号后两位+姓名_黑盒实验
三、实验报告
(1)程序代码 #include
using namespace std;
void main() { int year, month, day;
cout<<"请输入年份:"< cin>>year; cout<<"请输入月份:"< cin>>month; cout<<"请输入日期:"< cin>>day; int i, num=0,total, total1, total2; for(i=1; i { if((i%4==0)&&(i%100!=0)||(i%400==0)) num++; } total1 = 365*(year-num-1) + 366*num; if((year%4==0)&&(year%100!=0)||(year%400==0)) { switch(month) { case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 60;break; case 4:total2 = 91;break; case 5:total2 = 121;break; case 6:total2 = 152;break; case 7:total2 = 182;break; case 8:total2 = 213;break; case 9:total2 = 244;break; case 10:total2 = 274;break; case 11:total2 = 305;break; case 12:total2 = 335;break; } } else { switch(month) { case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 59;break; case 4:total2 = 90;break; case 5:total2 = 120;break; case 6:total2 = 151;break; case 7:total2 = 181;break; case 8:total2 = 212;break; case 9:total2 = 243;break; case 10:total2 = 273;break; case 11:total2 = 304;break; case 12:total2 = 334;break; } } total = total1 + total2 + day; int week; week = total % 7; switch(week) { case 0:cout<<"今天是星期天"< case 1:cout<<"今天是星期一"< case 3:cout<<"今天是星期三"< case 4:cout<<"今天是星期四"< case 5:cout<<"今天是星期五"< case 6;cout<<"今天是星期六"< } (2)等价类划分 输入条件 有效等价类 编号 无效等价类 编号 year Year为闰年 1 Year不为闰年 2 Year为正整数 3 Year为非正数 13 Year为非整数 14 month Month=1,3,5,7,8,10 4 month<1 15 Month=4,6,9,11 5 month>12 16 Month=2 6 month为非整数 17 Month=12 7 day 1<=day<=27 8 day<1 18 day=28 9 day为非整数 19 day=29 10 day=30 11 day=31 12 day>31 20 测试用例 测试用例 编号 输入数据 输出数据 覆盖 等价类 year month day 1 2000 5 21 今天是星期日 2 2010 2 27 今天是星期六 3 2010 4 26 今天是星期一 4 2010 12 30 今天是星期四 2,3,7,11 5 2010 5 31 今天是星期一 2,3,4,12 6 -1 5 22 提示:输入错误 13 7 1.5 5 22 提示:输入错误 14 8 2010 -1 22 提示:输入错误 15 9 2010 13 22 提示:输入错误 16 10 2010 5.5 22 提示:输入错误 17 11 2010 5 -1 提示:输入错误 18 12 2010 5 2.5 提示:输入错误 19 13 2010 5 32 提示:输入错误 20 (3)边界值分析(1<=year<=2050) 测试用例 输入数据 输出数据 year month day 1 0 6 15 提示:输出错误 2 1 6 15 今天是星期五 3 2 6 15 今天是星期六 4 1025 6 15 今天是星期四 5 2049 6 15 今天是星期二 6 2050 6 15 今天是星期三 7 2051 6 15 提示:输出错误 8 1025 0 15 提示:输出错误 9 1025 1 15 今天是星期六 10 1025 2 15 今天是星期二 11 1025 11 15 今天是星期二 12 1025 12 15 今天是星期四 13 1025 13 15 提示:输出错误 14 1025 6 0 提示:输出错误 15 1025 6 1 今天是星期三 16 1025 6 2 今天是星期四 17 1025 6 30 今天是星期四 18 1025 6 31 提示:输出错误 19 1025 6 32 提示:输出错误 (4)决策表 原因: C1:year为闰年 C2:month为1、3、5、7、8、10、12 C3:month为4、6、9、11 C4:month为2 C5:1<=day<=27 C6:day=28 C7:day=29 C8:day=30 C9:day=31 结果: E1:输出今天是星期几 E2:提示:输入不满足要求 1 2 3 4 5 6 7 8 9 10 11 12 13 原 因 C1 - - - T T T T T F F F F F C2 T F F F F F F F F F F F F C3 F T T F F F F F F F F F F C4 F F F T T T T T T T T T T C5 - - - T F F F F T F F F F C6 - - - F T F F F F T F F F C7 - - - F F T F F F F T F F C8 - - - F F F T F F F F T F C9 - F T F F F F T F F F F T 结 果 E1 T T F T T T F F T T F F F E2 F F T F F F T T F F T T T