一.简介:
本次小实验是在上次博客的基础上改进的,由一个editbox变成3个editbox。
由于被测试的文本框的个数增加,测试用例以及测试的内容都有所不同。
同时,我在编写代码时也考虑到了测试时的问题,因为3个editbox中的内容的要求、规格都是一致的,因此只需要写个for循环来控制3个box的测试 ,这为测试时带来了方便。
另外,3个box与1个box问题的区别在于他们之间的输入是否互相影响,这点在测试以及编程时也要考虑到。
具体上次问题的介绍请参考我的上一篇博客:http://www.cnblogs.com/zhanghan2015/p/4357236.html
二.划分等价类:
编号 | 有效等价类 | 编号 | 无效等价类 |
1 | 长度1-6 | 6 | 长度0 |
7 | 长度>=6 | ||
2 | 数字0-9 | 8 | 数字字母以外的字符/ 控制字符/ 标点符号 |
3 | 字母a-z | ||
4 | 字母A-Z | ||
5 | 输入正确盒子 个数为3 | 9 | 盒子1不正确,盒子2,3正确 |
10 | 盒子2不正确,盒子1,3正确 | ||
11 | 盒子3不正确,盒子1,2正确 | ||
12 | 盒子1,2不正确,盒子3正确 | ||
13 | 盒子1,3不正确,盒子2正确 | ||
14 | 盒子2,3不正确,盒子1正确 | ||
15 | 盒子1,2,3都不正确 |
三.设计测试用例:
编号 | 测试用例 | 覆盖等价类 | 期望输出 |
1 | 123ab C45 789xYZ | 1,2,3,4,5 | 第1个盒子输入正确! 第2个盒子输入正确! 第3个盒子输入正确! |
2 | null null null | 6,15 | 输入不能为空 |
3 | aaaaaaaa aaaaaaaa aaaaaaaa | 7,15 | 输入长度不能大于6 |
4 | [[[ [[[ [[[ | 8,15 | 不能输入数字和字母以外的字符 |
5 | 123ab abcdefg ,,,, | 9 | 第1个盒子输入正确,第2,3个盒子错误 |
6 | null 45C 0123333 | 10 | 第2个盒子输入正确,第1,3个盒子错误 |
7 | !!!! null 46Cd
| 11 | 第3个盒子输入正确,第1,2个盒子错误 |
8 | 123ab Xy6 null | 12 | 第1,2个盒子正确,第3个盒子错误 |
9 | 123ab /// 09VC | 13 | 第1,3个盒子正确,第2个盒子错误 |
10 | 0000000 123ab KLM | 14 | 第2,3个盒子正确,第1个盒子错误 |
11 | null ;;;; 1234567 | 15 | 第1,2,3个盒子都错误 |
四.代码:
<%@ 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 myArray=new Array(3);
var alertstr=new Array("输入为空!","长度大于6个字符!","你输入的字符不是数字或者字母!","输入正确!");
for( i=0;i<3;i++)
{
var str=document.getElementById(i).value;
if(str.length<1)
{
myArray[i]=0;
}
else if(str.length>6)
{
myArray[i]=1;
}
else
{
var reg = /[^0-9a-zA-Z]+$/;
if(reg.test(str))
{
myArray[i]=2;
}
else
{
myArray[i]=3;
}
}
}
var alerts="";
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
if(myArray[j]==k)
{
alerts+="第"+(j+1)+"个盒子"+alertstr[k]+"\n";
}
}
}
alert(alerts);
}
</script>
<body>
<p align="center">请输入1-6位字符(只允许数字和字母)</p>
<center>
<tr style="text-align:center">盒子1:
<input id="0" type="text" >
</tr><br></br>
<tr style="text-align:center">盒子2:
<input id="1" type="text" >
</tr><br></br>
<tr style="text-align:center">盒子3:
<input id="2" type="text" >
</tr><br></br>
<tr><button type="button" οnclick="myFun()"align="center">确定</button></tr>
</center>
</body>
</html>
五.测试结果:
(1)第1,2 ,3个盒子都正确:
(2)输入不能为空
(3)长度不能超过6
(4)不能输入数字和字母以外的字符
(5)第1个盒子输入正确,第2,3个盒子错误
(6)第2个盒子输入正确,第1,3个盒子错误
(7)第3个盒子输入正确,第1,2个盒子错误
(8)第1,2个盒子输入正确,第3个盒子错误
(9)第1,3个盒子输入正确,第2个盒子错误
(10)第2,3个盒子输入正确,第1个盒子错误
(11)3个盒子都输入错误
六.心得:
虽然这个小例子比较简单,但是我体会到程序员编程时应该充分考虑到测试时候的问题,用简洁清晰的代码为测试工作创造便捷。