1. 测试程序源代码
#include\"stdafx。h\" #include void NextDate(int year,int month,int day); void main() { int year=0,month=0,day=0; NextDate(year,month,day); } void NextDate(int year,int month,int day) { cout〈<”请输入年份:”< while(!(year>=1911 && year<=2013)) { cout<<\"年份超过界限,请重新输入”<〈endl; cin>〉year; } cout<〈”请输入月份:\"<〈endl; cin〉〉month; while (month〉12||month<1) { cout〈〈”月份输入有误,请重新输入\"<〈endl; cin>>month; } cout<〈”请输入日期:\"<〈endl; cin〉>day; while (day〉31||day<1) { cout〈〈”日期输入有误,请重新输入\"〈 while(month==4&&day==31||month==6&&day==31||month==9&&day==31||month==11&&day==31) { cout〈<”小月没有31号”〈 int i=0; i=day-29; while(month==2&&i〉0) { cout〈〈”本月是闰月,请在1-29之间从新输入日期\"<〈endl; NextDate函数测试用例 cin〉>day; } if(month==2&&day==29) { month=3; day=1; } else day++; } else day++; //月底计算; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: if (day==32) { month++; day=1; cout<<\"明天是:\"< if(day==29) { month=3; day=1; cout〈〈\"明天是:\"〈 if(day==31) { month++; day=1; cout<〈\"明天是:\"〈 if(day==32) NextDate函数测试用例 { year++; month=1; day=1; cout〈<\"明天是:”〈 1开始 2输入年、月、日43日期是否合法?无效日期5闰年的2月29日或者非闰年的2月28日6明天为3月1日87大月的31号或者小月的30号下个月是否大于129下个月1号1011日期加11月1号12结束 NextDate函数测试用例 DD-路径 情况1. 由一个节点组成,内度=0 情况2。 由一个节点组成,外度=0 情况3. 由一个节点组成,内度>=2或外度〉=2 情况4. 由一个节点组成,内度=1并且外度=1 情况5。 长度〉=1的最大链 情况2 :节点6、节点9、节点10 情况3 :节点2、节点3、节点5、节点7、节点8 情况4 :节点4、节点11 白盒测试对每条DD-路径测试用例 用例说明 输入正确的年、月、日 输入错误的年、月、日 输入错误的年、月、日 输入错误的年、月、日 输入闰年2月29日 输入非闰年2月28日 输入大月31日 输入小月30日 输入12月31日 输入数据 预期结果 实际结果 2011年6月162011年6月15日 2011年6月16日 日 2501年6月15日 日期输入有误 输入有误,重新输入 2011年6月33日 日期输入有误 输入有误,重新输入 2011年13月15日期输入有误 输入有误,重新输入 日 2000年3月12000年2月29日 2000年3月1日 日 2001年3月12001年2月28日 2001年3月1日 日 2001年4月12001年3月31日 2001年4月1日 日 2001年5月12001年4月30日 2001年5月1日 日 2004年12月312005年1月12005年1月1日 日 日 NextDate函数测试用例 NextDate函数测试用例 判定覆盖 编号 1 2 输入数据 预期结果 实际结果 2000年7月12000年6月30日 2000年6月16日 日 2011年1月12010年12月31日 2011年1月1日 日 NextDate函数测试用例 黑盒测试 利用等价类划分法设计测试用例 输入条件 编号 有效等价类 输入年份 输入月份 输入日期 输入类型 输入为闰年 输入为平年 ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ 编号 无效等价类 年<1912 年〉2012 月〈1 月〉12 日期<1 日期〉31 除int型外的任意输入 输入为闰年2月30日 输入2月29日 覆盖等价类 ⑴⑵⑶⑷ ⑸ ⑹ 1912〈=年<=2012 ⑺ ⑻ 1〈=月份〈=12 ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ 实际输出 1988/2/4 2000/3/1 2001/3/1 1<=日期〈=31 输入为int型 输入2月29日 输入2月28日 预期结果 1988/2/4 2000/3/1 2001/3/1 测试执行情况与记录 测试用例编号 输入 1 1988/2/3 2 2000/2/29 3 2001/2/28 4 1800/1/2年份输入年份输入有误,请重新输⑺ NextDate函数测试用例 3 5 2200/3/2 6 1912/0/3 7 1927/30/3 1956/3/—20 1972/3/43 asd 2000/2/30 8 9 10 11 12 2001/2/29 有误,请重新输入 年份输入有误,请重新输入 月份输入有误,请重新输入 月份输入有误,请重新输入 日期输入有误,请重新输入 日期输入有误,请重新输入 程序进入死循环 本月是闰月,请在1—29之间从新输入日期 2001/2/30 入 年份输入有误,请重新输⑻ 入 月份输入有误,请重新输⑼ 入 月份输入有误,请重新输⑽ 入 日期输入有误,请重新输⑾ 入 日期输入有误,请重新输⑿ 入 程序进入死循环 ⒀ 本月是闰月,请在1—29⒁ 之间从新输入日期 2001/2/30 ⒂ NextDate函数测试用例 NextDate函数测试用例 NextDate函数测试用例 边界值测试 用例 月份 日期 年 1 2 3 4 5 6 7 8 9 10 11 6 6 6 6 6 6 6 6 6 6 1 15 15 15 15 15 1 2 15 30 31 15 1911 1912 1962 2012 2013 1962 1962 1962 1962 1962 1962 预期输出 实际输出 6/16/1911 6/16/1911 6/16/1912 6/16/1912 6/16/1962 6/16/1962 6/16/2012 6/16/2012 6/16/2013 6/16/2013 6/2/1962 6/2/1962 6/3/1962 6/3/1962 6/16/1962 6/16/1962 7/1/1962 7/1/1962 非法输入 非法输入 1/16/1962 1/16/1962 NextDate函数测试用例 12 13 14 15 2 6 11 12 15 15 15 15 1962 1962 1962 1962 2/16/1962 2/16/1962 6/16/1962 6/16/1962 11/16/1962 11/16/1962 12/16/1962 12/16/1962 NextDate函数测试用例 NextDate函数测试用例 NextDate函数测试用例 结果分析: 白盒测试和黑盒测试的用例中,预期结果与运行结果都是相同的,与实际日期符合的,因此,本函数准确性较好,但是存在死循环,说明程序鲁棒性不好,还有待改 NextDate函数测试用例 进。 因篇幅问题不能全部显示,请点此查看更多更全内容