一、找出函数中存在的问题。
1、 某站点通过用户输入的用户名和密码(在login.jsp登录页中输入)来判断出现什么样的界面,如果是管理员(即用户名为admin或administrator)跳转到管理员页面(welcome_admin.jsp),非管理用户跳转到普通用户界面(welcome.jsp)。游客访问站点是,无需输入用户名和密码,直接进入普通用户界面(welcome.jsp)。
要求:找出UserOperation.java文件中的getUserRole ()方法存在的问题,说明问题产生的原因,并修改它。
说明:不要求编写Junit单元测试用例,可以自己设想测试数据,通过静态分析,配合动态运行调试找出问题所在。
问题:只要输入admin即可进入管理员页面
原因:未进行密码校验
修改:
JAVA:
public String getUserRole(String userName,String userPassword){ String userRole="guest"; if(userName.equals("admin") || userName.equals("administrator")){ userRole="admin"; } if(!userPassword.equals("123456")){ userRole = "guest"; } return userRole; }
JSP:
<%@ page language="java" pageEncoding="gbk" import="java.sql.*"%> <jsp:useBean id="UserOpeBean" scope="page" class="com.fenglong.service.UserOperation"></jsp:useBean> <html> <body> <% String userName=request.getParameter("userName"); String userPassword=request.getParameter("userPassword"); String userRole=UserOpeBean.getUserRole(userName, userPassword); if(userRole.equals("admin")){ %> <jsp:forward page="welcome_admin.jsp"/> <% }else{ %> <jsp:forward page="welcome.jsp"/> <% } %> </body> </html>
2、 用户注册(register.jsp)时要输入年龄字段,用户输入的参数由UserOperation.java文件中的validateUserAge()方法,转换为数值型,判断年龄是否在18~26之间(包括18和26),如果年龄在此区间内,则返回true,跳转到login.jsp页,否则弹出提示框,提示“用户年龄输入不正确”。
要求:找出UserOperation.java文件中的validateUserAge()方法存在的问题,说明问题产生的原因,并修改它。
说明:不要求编写Junit单元测试用例,可以自己设想测试数据,通过静态分析,配合动态运行调试找出问题所在。
问题:输入英文字符出错
原因:类型无法转换
修改:
public boolean validateUserAge(String userAge){ int age; try { age = Integer.parseInt(userAge); } catch (Exception e) { age = 0; } if(age<18 || age>26){ return true; } return false; } }
二、利用黑盒测试中的等价类划分完成以下题目
3、某程序规定:"输入三个非0正整数 a 、 b 、 c 分别作为三边的边长构成三角形(暂不考虑特殊三角形的情况)。请根据给出的说明,用等价类划分法进行划分,并给每个等价类规定唯一的编号。
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 | |
三角形三个边 | 正数 | 1 | 一边 < 0 | a < 0 | 11 |
b < 0 | 12 | ||||
c < 0 | 13 | ||||
两边 < 0 | a < 0 且 b < 0 | 14 | |||
b < 0 且 c < 0 | 15 | ||||
a < 0 且 c < 0 | 16 | ||||
三边均 < 0 | a < 0 且 b < 0 且 c < 0 | 17 | |||
整数 | 2 | 一边为非整数 | a为非整数 | 21 | |
b为非整数 | 22 | ||||
c为非整数 | 23 | ||||
两边为非整数 | a , b为非整数 | 24 | |||
b , c为非整数 | 25 | ||||
a , c为非整数 | 26 | ||||
三边均为非整数 | a , b, c均为非整数 | 27 | |||
非零数 | 3 | 一边为零 | a = 0 | 31 | |
b = 0 | 32 | ||||
c = 0 | 33 | ||||
两边为零 | a = 0 且 b = 0 | 34 | |||
b = 0 且 c = 0 | 35 | ||||
a = 0 且 c = 0 | 36 | ||||
三边均为零 | a = 0 且 b = 0 且 c = 0 | 37 | |||
三个边 | 4 | 只给一边 | 只给 a | 41 | |
只给 a | 42 | ||||
只给 c | 43 | ||||
只给两边 | 只给 a , b | 44 | |||
只给 b , c | 45 | ||||
只给 a , c | 46 | ||||
给出三个以上 | 47 | ||||
两边之和大于第三边 | 5 | 两边之和等于第三边 | a + b = a | 51 | |
b + c = a | 52 | ||||
a + c = b | 53 | ||||
两边之和小于第三边 | a + b < a | 54 | |||
b + c < a | 55 | ||||
a + c < b | 56 |
时间: 2024-10-17 17:26:13