上课时学习了等价类测试,所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并集便是整个输入域。目的在于测试用例的无冗余性。有效等价类指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。
划分等价类测试为有效等价类和无效等价类,检验程序是否符合要求,使软件测试的一种方法。划分等价类可以有如下几种方法。
1.按区间划分。
2.按数值划分。
3.按数值集合划分。
4.按限制条件或规划划分。
5.按处理方式划分。
一个简单的实践:
检验用户名是否合法
1)要求:允许1到6个英文字符或数字。
2)划分等价类:
划分等价类:有效等价类:长度:1到6字符:a-z,A-Z,0-9
无效等价类:长度:0,7 字符:英文/数字以外字符,控制字符,标点符号
编号 | 有效等价类 | 编号 | 无效等价类 | |
长度 | 1 | 1到6 | 3 | 0,7 |
字符 | 2 | a-z,A-Z,0-9 | 4 | 英文/数字以外字符,控制字符,标点符号 |
3)设定测试用例:
编号 | 测试用例 | 覆盖等价类 | 希望输出 |
test1 | 3 | false | |
test2 | 1234567 | 3 | false |
test3 | aB2 | 12 | true |
test4 | @ | 14 | false |
test5 | af$$fa | 124 | false |
test6 | ,.67g | 124 | false |
test7 | sf4gs | 12 | true |
test8 | ewr4wrw | 23 | false |
test9 | %rhjhs.,hs | 234 | false |
4)代码实现及测试
使用jsp+tomcat的方法实现。
前台:
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <center><font size=7 color=#800000>用户名校验</font> </center> 5 <br/><br/> 6 <hr/> 7 <br/> 8 9 <% 10 String text=(String)session.getAttribute("text"); 11 if(text == null) 12 text =""; 13 %> 14 <div> 15 <form name="form1" method="post" action="http://localhost:8080/new/check.jsp"> 16 <center>请输入: <input type="text" style="200px; height:20px;" name="text"value=<%=text%>></center><br/> 17 <center><input type="submit" class = button value="检验"> 18 <input type="reset" value="重置"></center> 19 </form> 20 </div> 21 <%session.invalidate(); %> 22 </body> 23 </html>
后台:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page language="java" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.*" %> <%@ page import= "java.util.regex.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <% String text= request.getParameter("text"); request.getSession().setAttribute("text",text); int length = text.length(); if(length==0){ %> <script> alert("字符不能为空!"); window.location="index.jsp"; </script> <%} if(length!=0&&length>6){ %> <script> var t='<%=text%>'; alert("字符"+t+"长度不合法!"); window.location="index.jsp"; </script> <%} if(length>0&&length<=6){ String regex = "([a-z]|[A-Z]|[0-9])+"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(text); if(m.matches()==true){ %> <script> var t='<%=text%>'; alert("字符"+t+"合法!"); window.location="index.jsp"; </script> <% } else{ %> <script> var t='<%=text%>'; alert("字符"+t+"不合法!"); window.location="index.jsp"; </script> <%}}%> </body> </html>
输出结果:
测试页面:
测试结果: