一. 实验内容:
编写一段小程序,输入只能是长度为1—6的数字和英文字母,用划分等价类的方法设计测试用例,检验程序的正确性。
二.实验目的:
学习用划分等价类的方法设计测试用例。
三.实验背景:
关于等价类的知识:
有效等价类:检验程序是否实现了规格说明预先规定的功能和性能。
无效等价类:检查软件功能和性能的实现是否有不符合规格说明要求的地方。
常用的等价类划分原则
(1)按区间划分
(2)按数值划分
(3)按数值集合划分
(4)按限制条件或规则划分
(5)细分等价类
等价类测试用例设计
(1)在确立了等价类之后,可列出所有划分出的等价类表。
(2)为每一个等价类规定一个唯一的编号。
(3)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,直到测试用例覆盖了所有的有效等价类。
(4)设计一个新的测试用例,使其覆盖且只覆盖一个尚未覆盖的无效等价类。重复这一步,直到测试用例覆盖了所有的无效等价类。
四.划分等价类:
编号 | 有效等价类 | 编号 | 无效等价类 |
1 | 长度1-6 | 5 | 长度0 |
6 | 长度>=7 | ||
2 | 数字0-9 | 7 |
数字字母以外的字符/ 控制字符/ 标点符号 |
3 | 字母a-z | ||
4 | 字母A-Z |
五.设计测试用例:
编号 | 测试用例 | 覆盖等价类 | 期望输出 |
1 | 123abC | 1,2,3,4 | 正确 |
2 | null | 5 | 请输入字符 |
3 | aaaa1234 | 6 | 长度不能超过6 |
4 | 1// | 7 | 不能输入字母和数字之外的字符 |
六.实验结果:
(1)有效输入
(2)输入为空
(3)长度大于6
(4)含有非数字字母的字符
七.代码和说明:
本实验使用的是web开发工具MyEcilpse,使用的是html和javascript语言。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <script> function myFun() { var str = document.getElementById("password").value; if(str.length<1) { alert("输入为空!请输入1~6个字符"); } else if(str.length>6) { alert("长度大于6个字符!"); } else { var reg = /[^0-9a-zA-Z]+$/; if(reg.test(str)) { alert("你输入的字符不是数字或者字母"); } else { alert("输入成功!"); } } } </script> <body> <p align="center">请输入1-6位字符(只允许数字和字母)</p> <center> <tr style="text-align:center"> <input id="password" type="text" > </tr><br></br> <tr><button type="button" onclick="myFun()"align="center">确定</button></tr> </center> </body> </html>
八.一些关于正表达式的补充:
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
w | 匹配字母或数字或下划线或汉字 |
s | 匹配任意的空白符 |
d | 匹配数字 |
匹配单词的开始或结束 | |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
代码/语法 | 说明 |
---|---|
W | 匹配任意不是字母,数字,下划线,汉字的字符 |
S | 匹配任意不是空白符的字符 |
D | 匹配任意非数字的字符 |
B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
参考博客:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
js正则表达式中test方法的说明
test 返回 Boolean,查找对应的字符串中是否存在模式。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true
参考:http://www.jb51.net/article/46378.htm