使用Java编写JDBC脚本对Mysql进行增删改查等操作的性能测试
使用Jmeter提供的脚本框架依赖的jar包(分别在jmeter目录下的lib和ext目录下)
ApacheJMeter_core.jar
ApacheJMeter_java.jar
avalon-framework-4.1.4.jar jorphan.jar
logkit-2.0.jar
若为4.+以上的jmeter还需加两个 slf4j-api-的.jar包
脚本调试好后,导出为jar包,放在apache-jmeter-3.1\lib\ext目录下
Jmeter脚本要点
1,实现JavaSamplerClient接口
2,四个方法:
getDefaultParameters:获取参数,设置的参数会在Jmeter的参数面板上显示出来
setupTest:初始化方法,只执行一次,跟LR里的init方法一样的,用于建立链接
runTest:执行N次,处理业务
teardownTest:结束方法,只执行一次,LR里的end方法是一样的,用于释放资源
3,导出Jmeter的java脚本
导出之前先把脚本运行一遍,使用main方法,空的也行
file-export-runnable java file - launch configuration 那里要选择你的类名
Library handing那里选择第三项copy xxxx
将导出的xxx.jar 和xxx_lib文件夹放到Jmeter的lib/ext目录下
重新启动Jmeter
创建class文件时在interfaces处add->JavaSamplerClient
package cn.test.jmeter;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;
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;
public class MyJmeterTest implements JavaSamplerClient {// 全局变量PreparedStatement statement;Connection conn;@Overridepublic Arguments getDefaultParameters() {// TODO Auto-generated method stubreturn null;}
/*** 初始化的操作写在setup方法里,类似于LR里的init*/@Overridepublic void setupTest(JavaSamplerContext arg0) {// 注册驱动,告诉Java接下来要链接哪个数据库try {Class.forName("com.mysql.jdbc.Driver");// 建立mysql数据库链接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "123456");// 把sql进行编译statement = conn.prepareStatement("insert into itcast_role (name, description) values (?,?)");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 真正多次操作的业务,放在runtest方法里,类似于LR里的action*/@Overridepublic SampleResult runTest(JavaSamplerContext arg0) {SampleResult result = new SampleResult();// 给事务起个名称result.setSampleLabel("insert");// 事务开始result.sampleStart();// 执行sql之前,先进行参数化try {statement.setString(1, "abc");statement.setString(2, "test");int rows = statement.executeUpdate();if (rows > 0){// 事务成功result.setSuccessful(true);}else{// 事务失败result.setSuccessful(false);}
} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 事务结束result.sampleEnd();return result;}
/*** 结束的操作放在teardown里,类似于LR里的end*/@Overridepublic void teardownTest(JavaSamplerContext arg0) {// 关闭链接try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}
}
public static void main(String[] args) {MyJmeterTest test = new MyJmeterTest();// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象JavaSamplerContext context = new JavaSamplerContext(new Arguments());test.setupTest(context);test.runTest(context);test.teardownTest(context);}
}
导出到jmeter中用
拷贝到jmeter的lib_ext下,包括二次开发的脚本也都是放在这个目录下,重启jmeter
创建一个java请求
转载于:https://www.cnblogs.com/malinalian/p/10582987.html
相关资源:数据结构—成绩单生成器