
实验2:黑盒测试法实验
| 姓名 | 院系 | 软件学院 | 学号 | |||||
| 任课教师 | 实验指导教师 | |||||||
| 实验地点 | 21A 428 | 实验时间 | 2014-12-12 | |||||
| 实验目的 | ||||||||
| ●系统地学习和理解黑盒测试的基本概念、原理 ●熟悉和掌握等价类划分法,边界值分析法和决策表方法 ●掌握测试用例编写要点 | ||||||||
| 实验内容 | ||||||||
| 1.编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员月工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。若雇员月工作小时超过50小时,则超过50的部分按原工资的3倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。 请结合等价类划分法和边界值分析法设计出相应的测试用例,并依照测试用例对所编写的程序进行测试。 2.给出某一天(年,月, 日),计算出它的下一天,取值范围为: 年:1月:1日:1<= day <=31 如 1999年3月4日的下一天是:1999年3月5日 要求: 输入:三个参数(年,月, 日) 输出:如能正确计算,计算出它的下一天, 否则,输出相应的错误信息。 请利用决策表法设计出相应的测试用例,并依照测试用例对所编写的程序进行测试。 | ||||||||
| 实验结果 | ||||||||
| 实验一 1.等价类划分法 输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 | ||||
| 工作时间 | 0=hour | A1 | hour<0 | A5 | ||||
0| A2 | hour>744 | A6 | | |||||
40| A3 | | |||||||
50| A4 | | |||||||
| 每小时工资 | wage>0 | B1 | wage<0 | B2 | ||||
| 编号 | 输入数据 | 覆盖等价类 | 输出数据 | |
| 工作时间 | 每小时工资 | |||
| 1 | 0 | 10 | A1 B1 | 0 |
| 2 | 10 | 10 | A2 B1 | 100 |
| 3 | 41 | 10 | A3 B1 | 415 |
| 4 | 51 | 10 | A4 B1 | 580 |
| 5 | -1 | 10 | A5 B1 | 输入错误(不符合实际) |
| 6 | 750 | 10 | A6 B1 | 输入错误(不符合实际) |
| 7 | 0 | -10 | A1 B2 | 输入错误(不符合实际) |
| 8 | 10 | -10 | A2 B2 | 输入错误(不符合实际) |
| 9 | 41 | -10 | A3 B2 | 输入错误(不符合实际) |
| 10 | 51 | -10 | A4 B2 | 输入错误(不符合实际) |
| 11 | -1 | -10 | A5 B2 | 输入错误(不符合实际) |
| 12 | 750 | -10 | A6 B2 | 输入错误(不符合实际) |
| 编号 | 输入数据 | 输出 | |
| 时间hours | 工资wage | ||
| 1 | 0 | 40 | 0 |
| 2 | 40 | 40 | 出错 |
| 3 | 41 | 40 | 1760 |
| 4 | -1 | 40 | 时间<0 |
| 5 | 745 | 40 | 时间>744 |
| 6 | 744 | 40 | 出错 |
| 7 | 10 | -10 | 工资小于0 |
| 8 | 44 | -10 | 工资小于0 |
| 9 | -1 | -10 | 工资小于0 |
| 10 | 745 | -10 | 工资小于0 |
| 11 | 743 | 40 | 29720 |
月份:M1=4,6,9,11(30天)
M2=1,3,5,7,8,10(31天12月除外)
日期:D1=1至27
D2=28
D3=29
年:Y1为闰年 Y2为平年
条件桩:C1:月份在{M1,M2,M3,M4}中之一
C2:日期在{D1,D2,D3,D4 ,D5}中之一
C3:年在{Y1,Y2}中之一
动作桩:A1:不可能
A2:日期增1
A3:日期复位(置1)
A4:月份增1
A5:月份复位(置1)
A6:年增1
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
| C1 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | M2 | M2 | M3 |
| C2 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 |
| C3 | |||||||||||
| A1 | T | ||||||||||
| T | T | T | T | T | T | T | T | ||||
| T | T | ||||||||||
| T | T | ||||||||||
| A5 | |||||||||||
| A6 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | |
| C1 | M3 | M3 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4 | M4 |
| C2 | D2 | D3 | D4 | D5 | D1 | D2 | D2 | D3 | D3 | D4 | D5 |
| C3 | Y1 | Y2 | Y1 | Y2 | |||||||
| A1 | T | T | T | ||||||||
| T | T | T | T | T | |||||||
| T | T | T | |||||||||
| T | T | ||||||||||
| A5 | T | ||||||||||
| A6 | T |
| 用例编号 | 月 | 日 | 年 | 预期输出 | ||||||||
| 1--3 | 4 | 12/28/29 | 2001 | 2001年4月13/29/30日 | ||||||||
| 4 | 4 | 30 | 2001 | 2001年5月1日 | ||||||||
| 5 | 4 | 31 | 2001 | 不可能 | ||||||||
| 6--9 | 1 | 15/28/29/30 | 2001 | 2001年1月16/29/30/31日 | ||||||||
| 10 | 1 | 31 | 2001 | 2001年2月1日 | ||||||||
| 11-14 | 12 | 15/28/29/30 | 2001 | 2001年12月16/29/30/31日 | ||||||||
| 15 | 12 | 31 | 2001 | 2002年1月1日 | ||||||||
| 16 | 2 | 15 | 2001 | 2001年2月16日 | ||||||||
| 17 | 2 | 28 | 2004 | 2004年2月29日 | ||||||||
| 18 | 2 | 28 | 2001 | 2001年3月1日 | ||||||||
| 19 | 2 | 29 | 2005 | 2005年3月1日 | ||||||||
| 20 | 2 | 29 | 2001 | 不可能 | ||||||||
| 21,22 | 2 | 30/31 | 2001 | 不可能 | ||||||||
| 扣分原因(有扣分时填写) | 扣分 | 0 | ||||||
日期: | ||||||||
其他情况:扣分<=5分 总扣分不能大于10分
参考代码如下:
(1)程序参:
•#include •double main() •{ • int hours; • double payment,wage; • cout<<"please input hours and per hour pay:"; • cin>>hours>>wage; • if (hours<40) • payment=hours*wage ; • else if ((hours>40) && (hours<=50)) • payment=40*wage+(hours-40)*1.5*wage; • else if (hours>50) • payment=40*wage+10*1.5*wage+(hours-50)*3*wage; • cout<<"The final payment are:"< •} (2)#include void main() { 请输入年份:(1000~3000)"); 输入错误!请从新输入!\\n"); 请输入年份:(1000~3000)"); 请输入月份:(1~12)"); 输入错误!请从新输入!\\n"); 请输入月份:(1~12)"); maxday=30; if(year%400==0 || year%4==0) maxday=28; else maxday=29; maxday=31; 请输入日份:(1~31)"); 输入错误!请从新输入!\\n"); 请输入日份:(1~31)"); year=year+1; month=1; day=1; month=month+1; day=1; day=day+1; 下一天是%d年%d月%d日",year,month,day); }
