zoukankan      html  css  js  c++  java
  • 《软件测试》实验 实验五 测试技术

    实验目的

    (1) 根据实际情况,综合应用各种软件测试技术
    (2) 熟练掌握MyEclipse+Junit的Java编程和单元测试

    实验内容

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

    1、 请给MySQLConnBean.java中的类和每个方法都加上注释
    2、 找出项目中存在的缺陷,并给出解决的方案(至少3个,不包含下面那个举例)。
    说明:这里所说的缺陷不一定都是错误,而是明显需要改进的地方。
    如:不可以无限输入密码,容易被暴力破解,存在安全隐患。
    解决方案:密码输入3次错误,关闭浏览器。最好再加上验证码。

    1、

     1 package org.easybooks.bookstore.jdbc;
     2 import java.sql.*;
     3 /*
     4  * 作者:张伟
     5  * 时间:2016-4-22
     6  * 内容:jdbd的数据库连接和出现的问题的修改
     7  * */
     8 
     9 public class MySQLConnBean {
    10     private Statement stmt=null;    //定义一个 statement对象,等会用来执行SQL语句用的
    11     private Connection conn=null;   //定义一个变量:等会用来创建数据库连接
    12     private ResultSet rs=null;      //定义结果集,等会用来存放查询结果
    13     public void openConn() throws Exception {
    14         /*
    15          * 加载mysql的驱动类
    16          * 数据库连接加载的账户和密码分别为root和123456
    17          * 连接数据库
    18          * */
    19         Class.forName("com.mysql.jdbc.Driver");
    20         String url="jdbc:mysql://localhost:3306/test";
    21         String user="root";
    22         String password="123456";
    23         conn=DriverManager.getConnection(url, user, password); 
    24        public ResultSet execQuery(String sql){
    25         /*
    26          * 1、需要传入一个 conn 连接做参数,然后用这个conn连接创建statement对象,
    27              调用该方法即可拿到一个statement对象来使用,并获得结果。
    28          * 2、如果出错,抛出异常,显示出错的时间点和出错信息
    29          * */
    30         rs=null;
    31         try{
    32             stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
    33             rs=stmt.executeQuery(sql);
    34         }catch (SQLException e) {
    35             System.err.println("Data.executeQuery:"+e.getMessage());
    36         }
    37         
    38         return rs;  //返回rs
    39     }
    40     
    41     public void closeStmt(){
    42         /*
    43          * 执行完所有操作后,调用closeStmt()方法来关闭数据库连接
    44          * 如果出错,抛出异常,显示出错的时间点和出错信息
    45          * */
    46         try{
    47             stmt.close();
    48         }catch(SQLException e){
    49             System.err.println("Data.executeQuery:"+e.getMessage());
    50         }
    51     }
    52     
    53     public void closeConn(){
    54         /*
    55          * 执行完所有操作后,调用closeConn()方法来关闭数据库连接
    56          * 如果出错,抛出异常,显示出错的时间点和出错信息
    57          * */
    58         try{
    59             conn.close();
    60         }catch(SQLException e){
    61             System.err.println("Data.executeQuery:"+e.getMessage());
    62         }
    63     }
    64 }

    2、

    缺陷1:openConn()方法,当不存在test数据库,或者用户名密码不正确时,将发生异常
    解决方案:应对openConn()方法添加try…catch捕获错误,并对错误进行处理。

    缺陷2:即便为openConn()方法添加了try….catch,在validate.jsp页面依然会出错,原因是数据库未连接,那么ResultSet rs=MySqlBean.execQuery(strSql); 根本无法执行。
    解决方案一:在validate.jsp中添加try…catch;
    解决方案二:将openConn()方法的返回值改为boolean型,连接成功返回true,否则返回false。在validate.jsp判断连接成功再执行后面的操作
    解决方案三:通过设置错误处理页面来处理
    方法有很多,大家可以思考更简便更有效的方法进行处理。

    缺陷3:密码未加密,存在安全隐患
    解决方案:采用非加密算法对密码进行加密(如:MD5加密),再存入数据库。登录时采用同样的算法进行解密。

    缺陷4:不登录,一样也可以进入welcome.jsp页,访问网站内容
    解决方案:对于只有登录用户才能访问的页,要判断session,或者用拦截器、过滤器
    详细做法参考http://blog.csdn.net/lidawei201/article/details/8513853

    缺陷5:用户登录容易被暴力破解
    解决方案:设置验证码

    二、 请按要求对下面的Java代码进行测试。代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key的元素。  


    (1)要求采用基本路径法给出程序控制流图;
    (2)算出环路复杂性
    (3)给出所有的独立路径,以及对应的测试用例和预期结果

    (1) 程序控制流图如下:


    (2)有以下三种方法:
    1、通过控制流图的边数和节点数计算。设E为控制流图的边数,N为控制流图的节点数,则定义环路复杂性为 V(G)= E – N + 2 ;
    V(G)=E-N+2=16-14+2 = 4
    2、通过控制流图中判定节点数计算。
    若设P为控制流图中的判定节点数,则有V(G) = P + 1
    V(G)=P+1=3+1=4
    3将环路复杂性定义为控制流图中的区域数。该控制流图中有4个区域:R1、R2、R3、R4,因此其环路复杂性为4。

    (3)独立路径

    PATH1:1-2-3-4-5-6-8-10-11-12-4-13-14
    PATH2:1-2-3-4-5-6-8-9-12-4-13-14
    PATH3:1-2-3-4-5-6-7-12-4-13-14
    PATH4:1-2-3-4-13-14

    用例编号 路径 测试用例 预期结果
    1 PATH1 Arry[4]={2,4,6,8}          key=2 0
    2 PATH2 Arry[6]={2,3,6,8,13,15}   key=15 5
    3 PATH3 Arry[4]={1,2,3,4}          key=2 1
    4 PATH4 Arry[3]={1,2,3}            key=4 -1

     

     

  • 相关阅读:
    菜鸟记录:如何获取LOGINVIEW控件状态模板中的子控件
    无法安装dotnetFramework35sp1的解决方法
    MOSS2007小技巧:不用SPD轻松删除错误页面上的问题Webpart
    在动态页面里象静态页面一样控制整个网页的缓存和更新
    烦人的网页iframe去除
    经典sql注入教程
    自己写的后台静态权限验证类
    Asp.net项目从Vs2003转换到Vs2005的常见问题大全及解决方法
    C# 相当于ASP里Eval中的计算公式的方法(超简单的方法)
    1 UNIX与Linux的发展
  • 原文地址:https://www.cnblogs.com/zhangwei123/p/5496216.html
Copyright © 2011-2022 走看看