zoukankan      html  css  js  c++  java
  • 实验四 白盒测试

    实验目的

    (1) 掌握静态分析代码的技巧

    (2) 学习黑盒测试中的等价类划分

    实验内容

    一、 找出函数中存在的问题。以下题目均在Lab04项目中完成。

     

    1、 某站点通过用户输入的用户名和密码(在login.jsp登录页中输入)来判断出现什么样的界面,如果是管理员(即用户名为admin或administrator)跳转到管理员页面(welcome_admin.jsp),非管理用户跳转到普通用户界面(welcome.jsp)。游客访问站点是,无需输入用户名和密码,直接进入普通用户界面(welcome.jsp)

    要求:找出UserOperation.java文件中的getUserRole ()方法存在的问题,说明问题产生的原因,并修改它

    说明:不要求编写Junit单元测试用例,可以自己设想测试数据,通过静态分析,配合动态运行调试找出问题所在。

     我的观点: 在测试过程中我发现判断方式不够存在缺陷,UserOperation类中的 getUserRole方法

     

    public String getUserRole(String userName){
            String userRole="guest";
            String tt=userName;
            if(userName.equals("admin") || userName.equals("administrator")){
                userRole="admin";
            }
            
            return userRole;
        }

    不管是游客还是普通用户,只要用户名为admin或者adminnistrator不用输入密码,都可以直接进入管理员页面,并且不管用户名是否为空,都直接进入普通用户界面,那么游客和普通用户就没有什么差别了。

    所以修改如下:

     

    public String getUserRole(String username, String password){
        String userRole="guest";
    //假设密码为123456
        If(null != password && !“”.equals(123456)){
                 If(null != username && !“”.equals(username)){
                    if(userName.equals("admin")||userName.equals("administrator"){
                          userRole="admin";
                    }  
                    return userRole;
                }
                 else{
                        return userRole;
                  }
       }
      else{
                    return userRole;
      }                
    

     

    2、 用户注册(register.jsp)时要输入年龄字段,用户输入的参数由UserOperation.java文件中的validateUserAge()方法,转换为数值型,判断年龄是否在18~26之间(包括18和26),如果年龄在此区间内,则返回true,跳转到login.jsp页,否则弹出提示框,提示“用户年龄输入不正确”。

    要求:找出UserOperation.java文件中的validateUserAge()方法存在的问题,说明问题产生的原因,并修改它

    问题:在register.jsp中要求输入年龄的时候,如果我输入一个字母或者输入一个非字符的时候会报错

    我的观点:没有对年龄字符的判断,如果为字符串等不符合规定的,我们可以做一个强制转换,给用户看,让他们知道只能输入数字。

    源代码为:

     

    public boolean validateUserAge(String userAge) throws Exception{
    		if(Integer.parseInt(userAge)<18 || Integer.parseInt(userAge)>26){
    			return true;
    		}
    		 
    		else{ throw new Exception("您的输入不正确,请重新输入");
    	}
    	}
    }
    

    修改为:

    public boolean validateUserAge(String userAge){
          if(Integer.parseInt(userAge)>=18&&Integer.parseInt(userAge)<=26){
                return true;
               }
          else{
                 return false;
          }                
      }
    

     

    二、利用黑盒测试中的等价类划分完成以下题目

     

    3、某程序规定:"输入三个非0正整数 a 、 b 、 c 分别作为三边的边长构成三角形(暂不考虑特殊三角形的情况)。请根据给出的说明,用等价类划分法进行划分,并给每个等价类规定唯一的编号。

     

    有效等价类

    编号

    无效等价类

    编号

    整数

    1

    有非整数

    7

    非零整数

    2

    有一边或一边以上为零

    8

    两边为零

    9

    三遍为零

    10

    正整数

    3

    负整数

    11

    a+b>c

    4

    a+b<c

    12

    a+b=c

    13

    a+c>b

    5

    a+c<b

    14

    a+c=b

    15

    b+c>a

    6

    b+c<a

    16

    b+c=a

    17

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    MS SQL 事物日志传送能否跨数据库版本吗?
    MS SQL 模仿ORACLE的DESC
    Rhel-Server 5.5 安装ORACLE10
    ORACLE约束总结
    Win2003 设置远程连接限制数
    javascript学习代码-判断闰年
    javascript学习代码--点击按钮显示内容
    javascript学习代码
    反馈表样式
    调查表样式设计
  • 原文地址:https://www.cnblogs.com/mumudake/p/5398262.html
Copyright © 2011-2022 走看看