一.简介:
本次小实验是在上次博客的基础上改进的,由一个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]+"
";
}
}
}
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" onclick="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个盒子都输入错误

六.心得:
虽然这个小例子比较简单,但是我体会到程序员编程时应该充分考虑到测试时候的问题,用简洁清晰的代码为测试工作创造便捷。