《软件测试》实验四:白盒测试

本文分析了登录页面和用户注册功能中存在的问题,包括未经密码验证的管理员登录和年龄输入异常处理。通过改进代码逻辑,确保了系统的安全性。同时,采用等价类划分法进行了测试案例的设计。

一、找出函数中存在的问题。


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一边 < 0a < 011
b < 012
c < 013
两边 < 0a < 0 且 b < 014
b < 0 且 c < 015
a < 0 且 c < 016
三边均 < 0a < 0 且 b < 0 且 c < 017
整数2一边为非整数a为非整数21
b为非整数22
c为非整数23
两边为非整数a , b为非整数24
b , c为非整数25
a , c为非整数26
三边均为非整数a , b, c均为非整数27
非零数3一边为零a = 031
b = 032
c = 033
两边为零a = 0 且 b = 034
b = 0 且 c = 035
a = 0 且 c = 036
三边均为零a = 0 且 b = 0 且 c = 037
三个边4只给一边只给 a41
只给 a42
只给 c43
只给两边只给 a , b44
只给 b , c45
只给 a , c46
给出三个以上 47
两边之和大于第三边5两边之和等于第三边a + b = a51
b + c = a52
a + c = b53
两边之和小于第三边a + b < a54
b + c < a55
a + c < b56

 

转载于:https://www.cnblogs.com/doug1as/p/5517991.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值