黑盒测试实验报告

  • 格式: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