1.题目要求
坐在最后一排看的不是很清楚,貌似老师给了个能判断闰年的输入框,然后问大家输入abcd会怎么样,结果是报错了。
我们的任务是把这个判断闰年的输入框搞出来并且让这个系统可以handle非法的输入。
2.实现方法
实现方法再续前缘(html+servlet),关键代码如下:
1 PrintWriter out = response.getWriter(); 2 String tmp = request.getParameter("year"); 3 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); 4 out.println("<html>"); 5 out.println("<head>"); 6 out.println("<title>检查结果</title>"); 7 out.println("</head>"); 8 out.println("<body>"); 9 if(checkInput(tmp)){ 10 if(isLeapYear(Integer.parseInt(tmp))){ 11 out.println(tmp+" 是闰年"); 12 }else{out.println(tmp+" 不是闰年");} 13 }else{out.println("输入不合法,请点击返回重试");} 14 out.println("<button><a href=\"/UserForm/leapYear.jsp\">返回</a></button>"); 15 out.println("</body>"); 16 out.println("</html>"); 17 out.flush(); 18 19 public boolean checkInput(String tmp){ 20 Pattern pattern = Pattern.compile("([0-9]){4}"); 21 Matcher matcher = pattern.matcher(tmp); 22 boolean ok = matcher.matches(); //当条件满足时,将返回true,否则返回false 23 return ok; 24 } 25 26 public boolean isLeapYear(int year){ 27 return (year % 400 == 0)||(year % 4 == 0 && year % 100 != 0); 28 }
3.测试
首先先完成题目的要求,看过上面的代码可以知道,模式匹配可以准确的过滤掉非法的输入,如题目中的abcd,
这样判断闰年时调用parseInt()就不会出现不能转化的情况,也就不会报出exception。
接下来为了考虑周全,给出一些测试用例
1.存在空输入
系统会提示用户对年份输入
2.输入为数字却长度不合适
3.当存在非数字输入时见上“abcd”示例
4.能被400整除的年份
5.不能被400整除,能被4整除,却又不被100整除的年份
6.不能被400整除,不能被4整除的年份
7.不能被400整除,能被4整除,又被100整除的年份
4.结果分析
测试时用到了白盒测试的路径覆盖,感觉系统的学习软件测试可以让测试更井井有条,减少疏漏。
时间: 2024-11-09 00:16:20