请采用基本路径方法对前一日函数进行测试用例设计。
根据互换所得代码,画出流程图,流图,计算圈复杂度,给出独立路径,设计测试用例,执行测试。
比较预期结果和实际运行结果给出测试结论。
流程图:
流图:
计算圈复杂度V(G):
利用公式:V(G) = P +1得,圈复杂度等于判定节点数加一,根据上面画出得控制流图,可以知道:3、4、5、7、11、14、18、19、21、22、25、29是判定节点,共有12个,所以圈复杂度是12 +1 =13。
也可以进行进一步验证,通过控制流图得区域划分也可以得知,共有13个区域,则圈复杂度为13。
给出独立路径:
路径1:1->2->3->8->32
路径2:1->2->3->4->9->32
路径3:1->2->3->4->5->10->32
路径4:1->2->3->4->5->6->11->13->32
路径5:1->2->3->4->5->6->11->7->16->17->18->32
路径6:1->2->3->4->5->6->11->12->14->15->32
路径7:1->2->3->4->5->6->11->12->14->19->21->29->31->32
路径8:1->2->3->4->5->6->11->12->14->19->21->29->30->32
路径9:1->2->3->4->5->6->11->12->14->19->21->22->24->32
路径10:1->2->3->4->5->6->11->12->14->19->21->22->23->25->26->28->32
路径11:1->2->3->4->5->6->11->12->14->19->21->22->23->25->27->28->32
路径12:1->2->3->4->5->6->11->12->14->19->20->32
路径13:1->2->3->4->5->6->11->12->18->15->32
设计测试用例并执行后比较结果:
测试编号
Year
Month
Day
预期结果
实际结果
1
2080
3
1
提示请输入正确的年份
提示请输入正确的年份
2
2020
15
2
提示请输入正确的月份
提示请输入正确的月份
3
2020
11
35
提示请输入正确的日子
提示请输入正确的日子
4
2020
4
31
提示请输入正确的日子
提示请输入正确的日子
5
2000
2
30
提示请输入正确的日子
提示请输入正确的日子
6
2001
2
29
提示请输入正确的日子
提示请输入正确的日子
7
2000
3
1
前一天是2000年2月29号
前一天是2000年2月29号
8
2001
3
1
前一天是2001年2月28号
前一天是2001年2月28号
9
2000
1
1
前一天是1999年12月31号
前一天是1999年12月31号
10
2000
5
3
前一天是2000年5月2号
前一天是2000年5月2号
11
2000
5
1
前一天是2000年4月30号
前一天是2000年4月30号
12
2000
4
1
前一天是2000年3月31号
前一天是2000年3月31号
13
2000
4
3
前一天是2000年4月2号
前一天是2000年4月2号
程序代码:
import java.util.Scanner; public class test1 { public static void main(String args[]){ Scanner input = new Scanner(System.in); //依次输入年月日 System.out.print("请输入日期:"); int year = input.nextInt(); int month=input.nextInt(); int day=input.nextInt(); //判断日期是否输入正规 if (year<1900||year>2020){ System.out.println("请输入正确的年份!!!"); return; } if (month<1||month>12){ System.out.println("请输入正确的月份!!!"); return; } if(day<1||day>31){ System.out.println("请输入正确的日子!!!"); return; } if (month==4||month==6||month==9||month==11){ if (day==31){ System.out.println("请输入正确的日子!!!"); return; } } //判断是闰年还是非闰年,后面会用到 boolean flag = (year%4==0 && year%100!=0 || year%400==0); //判断闰年和平年二月的日期是否输入正确 if (flag){ if (month==2) { if (day>29){ System.out.println("请输入正确的日子!!!"); return; } } }else { if (month==2) { if (day>28){ System.out.println("请输入正确的日子!!!"); return; } } } //计算输入日期的前一天 if (day==1){ //如果是每个月的一号 //如果是3月一号 if (month==3){ if(flag){ System.out.println("前一天是"+year+"年"+"2月"+"29号"); }else { System.out.println("前一天是"+year+"年"+"2月"+"28号"); } }else{ if (month==1){ System.out.println("前一天是"+(year-1)+"年"+"12月"+"31号"); }else { month--; if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){ day=31; }else{ day=30; } System.out.println("前一天是"+year+"年"+month+"月"+day+"号"); } } }else { System.out.println("前一天是"+(year)+"年"+month+"月"+(day-1)+"号"); } } }
测试样例演示:
演示(测试编号1):
演示(测试编号2):
演示(测试编号3):
演示(测试编号4):
演示(测试编号5):
演示(测试编号6):
演示(测试编号7):
演示(测试编号8):
演示(测试编号9):
演示(测试编号10):
演示(测试编号11):
演示(测试编号12):
测试结论:
基于所测试的数据而言,前一日程序系统功能趋于稳定,在实验要求的范围内的测试数据都已经测试完毕且没有问题,本轮测试实验可以结束。