其实不需要用java来编写查询oracle性能的代码,jmeter有现成的JDBC Connection Configuration来实现对oracle的性能访问,只不过我这个测试人员很喜欢纠结一些事情,而且新年过后上班没什么事干,老大又调休了一周,反正闲着还是闲着,总不能浪费时间,于是把年前纠结的事情放在年后研究,具体是这样的:
有eclipse里创建工程,创建包,创建类等等,然后导入在你本机上安装的oracle的jdbc第三方包:
在Build Path--Add External Archives..引入jmeter的第三方包:
其实不用全部引入的,我比较懒,所以就把全部包引入了,建议按需引入。
然后编写以下代码:
package OOTest;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.util.Date;
public class OOTest implements JavaSamplerClient{
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.16.230:1521:sch";
String user = "YJXT";
String password = "yjxt";
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
boolean flag = false;
String keepusername;
String filename;
//接受jmeter中参数的传入
public Arguments getDefaultParameters(){
Arguments params = new Arguments();
params.addArgument("filename", "0");//设置参数,并赋予默认值0
return params;
}
//该方法只执行一次
public void setupTest(JavaSamplerContext arg0){
/*String keepusername = arg0.getParameter("filename");
SampleResult sr = new SampleResult();
sr.setResponseData("go :"+keepusername, null);
sr.setDataType(SampleResult.TEXT);*/
}
//循环执行的方法
public SampleResult runTest(JavaSamplerContext arg0) {
// TODO Auto-generated method stub
keepusername = arg0.getParameter("filename");
SampleResult sr = new SampleResult();
try {
try{
Class.forName(driver);
con = DriverManager.getConnection(url,user,password);
String sql = "select * from cas_user cu where cu.username = '" + keepusername + "'";
pstm = con.prepareStatement(sql);
rs = pstm.executeQuery();
flag = true;
}catch(ClassNotFoundException e){
sr.setResponseData("oracle,error1!");
e.printStackTrace();
flag = false;
}catch (SQLException e){
sr.setResponseData("oracle,error2!");
e.printStackTrace();
flag = false;
}
if(flag){
sr.setResponseData("oracle is true");
}
sr.setSuccessful(true);
}catch (Throwable e){
sr.setResponseData("oracle is false");
e.printStackTrace();
sr.setSuccessful(false);
}
return sr;
}
//结束代码,只执行一次。
public void teardownTest(JavaSamplerContext arg0) {
if(rs != null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
//关闭执行通道
if(pstm != null){
try{
pstm.close();
}catch (SQLException e){
e.printStackTrace();
}
}
//关闭连接通道
try{
if(con!=null&&(!con.isClosed())){
try{
con.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}catch(SQLException e){
e.printStackTrace();
}
}
/*public static void main(String[] args) {
// TODO Auto-generated method stub
Arguments params = new Arguments();
params.addArgument("filename", "zssy200585180");
JavaSamplerContext arg0 = new JavaSamplerContext(params);
OOTest ootest = new OOTest();
ootest.setupTest(arg0);
ootest.runTest(arg0);
ootest.teardownTest(arg0);
}*/
}
完成后把生成jar 至jmeter的ext下,然后在jmeter创建线程组和java请求:
设置导入参数的参数化文件:
执行:
查看oracle所执行过的语句:
以上就是我用一个纠结的方法完成一个oracle的性能测试,代码比较简单,是因为我只是粗略地写,实际优用需要再优化,喜欢的朋友可以拿去参考,欢迎指导。