一.简介:
本次小实验是在上次博客的基础上改进的,由一个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个盒子都输入错误
六.心得:
虽然这个小例子比较简单,但是我体会到程序员编程时应该充分考虑到测试时候的问题,用简洁清晰的代码为测试工作创造便捷。