博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《软件测试》实验 实验五 测试技术
阅读量:5241 次
发布时间:2019-06-14

本文共 3541 字,大约阅读时间需要 11 分钟。

实验目的

(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和12345617          * 连接数据库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;  //返回rs39     }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

 

 

转载于:https://www.cnblogs.com/zhangwei123/p/5496216.html

你可能感兴趣的文章
snmpwalk命令常用方法总结
查看>>
网站产品设计
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Java IO流学习总结
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
百度贴吧图片抓取工具
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>