实验5
《软件测试》实验
实验五 测试技术
实验目的
(1) 根据实际情况,综合应用各种软件测试技术
(2) 熟练掌握MyEclipse+Junit的Java编程和单元测试
实验内容
一、 找出函数中存在的问题。以下题目均在Lab05项目中完成。
1、 请给MySQLConnBean.java中的类和每个方法都加上注释
package org.easybooks.bookstore.jdbc;
import java.sql.*;
/**
* 该类专门负责用户与数据库进行连接
* @author 徐小青
* 更新时间:2016-4-22
*/
public class MySQLConnBean {
private Statement stmt=null;
private Connection conn=null;
private ResultSet rs=null;
/**
* 该方法是用来加载mysql数据库驱动,识别数据库的用户名和密码,
* @throws Exception
*/
public void openConn() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="123456";
conn=DriverManager.getConnection(url, user, password);
}
/**
* 该方法主要是获得一个MySQL的实例,后执行MySQL语句
* @param sql
* @return 返回结果集
*/
public ResultSet execQuery(String sql){
rs=null;
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}catch (SQLException e) {
System.err.println("Data.executeQuery:"+e.getMessage());
}
return rs;
}
/**
* 关闭声明
*/
public void closeStmt(){
try{
stmt.close();
}catch(SQLException e){
System.err.println("Data.executeQuery:"+e.getMessage());
}
}
/**
* 关闭连接对象
*/
public void closeConn(){
try{
conn.close();
}catch(SQLException e){
System.err.println("Data.executeQuery:"+e.getMessage());
}
}
}
2、 找出项目中存在的缺陷,并给出解决的方案(至少3个,不包含下面那个举例)。
说明:这里所说的缺陷不一定都是错误,而是明显需要改进的地方。
1.在open()方法中,当找不到数据库的名字和密码时会出现错误
解决方案:在那方法中加try catch()捕捉异常
2.密码未加密,存在安全隐患
解决方案:采用非加密算法对密码进行加密(如:MD5加密),再存入数据库。 登录时采用同样的算法进行解密。
3.不登录,一样也可以进入welcome.jsp页,访问网站内容
解决方案:对于只有登录用户才能访问的页,要判断session,或者用拦截器、过滤器
如:不可以无限输入密码,容易被暴力破解,存在安全隐患。
解决方案:密码输入3次错误,关闭浏览器。最好再加上验证码。
二、 请按要求对下面的Java代码进行测试。代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key的元素。
(1) 要求采用基本路径法给出程序控制流图;
(2) 算出环路复杂性
(3) 给出所有的独立路径,以及对应的测试用例和预期结果
程序控制流图
(2)环路复杂性:
16-14+2=4
(3)独立路径:
1.1-2-3-4-13-14
2.1-2-3-4-5-6-7-12-4-13-14
3.1-2-3-4-5-6-8-9-12-4-13-14
4.1-2-3-4-5-6-8-10-11-12-4-13-14
设计测试用例
用例编号 |
路径 |
输入数据 |
预期输出 |
1 |
1 |
Array[]={};key=1 |
-1 |
2 |
2 |
Array[3]={2,4,6}; Key=4
|
1 |
3 |
3 |
Array[3]={2,4,6,8} Key=4
|
0 |
4 |
4 |
Array[4]={2,4,6,8} Key=6 |
2 |