jmeter java性能_性能测试十一:jmeter进阶之java请求

使用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

ebc54a4fa12272458174782e8c7256a7.png

创建class文件时在interfaces处add->JavaSamplerClient

32273fe6641677b3e4f935cb14cd45ac.png

bb0dee7aaf2790ea34f9457d98f71561.png

176371c57a6d82016a8fe82341fdaa8b.png

b0068014df1ca352edfdb7d8cb50fcad.png

ed264f09732bc0119f1a0a7353f6e518.png

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;

@Override

public Arguments getDefaultParameters() {

// TODO Auto-generated method stub

return null;

}

/**

* 初始化的操作写在setup方法里,类似于LR里的init

*/

@Override

public 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 block

e.printStackTrace();

}

}

/**

* 真正多次操作的业务,放在runtest方法里,类似于LR里的action

*/

@Override

public 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 block

e.printStackTrace();

}

// 事务结束

result.sampleEnd();

return result;

}

/**

* 结束的操作放在teardown里,类似于LR里的end

*/

@Override

public void teardownTest(JavaSamplerContext arg0) {

// 关闭链接

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.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中用

6c8c7d3af3100b9af5fd6f901e857b76.png

f1127e60743732c5e15a207abff147b8.png

c695944e3457043381b8570c9517d806.png

840e2f7d622fbc7302d1b28962d01e95.png

5f3a47b32ff2234828ae1255d4d03fe0.png

拷贝到jmeter的lib_ext下,包括二次开发的脚本也都是放在这个目录下,重启jmeter

548ac9eec11e8e4dd9cefa6e32a25154.png

创建一个java请求

a9ae34b87de086743ec55c4d0451b93b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值