性能测试十一: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

创建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;
@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中用





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

创建一个java请求

性能测试十一:jmeter进阶之java请求的更多相关文章
- 性能测试十二:jmeter进阶之java请求参数化
如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...
- jmeter中实现java请求实战日志
view code public class JdbcInsert implements JavaSamplerClient { // 全局变量 PreparedStatement pstmt; Co ...
- jmeter之自定义java请求性能测试
一.环境准备 1.新建一个java工程 2.导入jar包:ApacheJMeter_core.jar ApacheJMeter_java.jar ...
- 【JMeter】JMeter完成一个java请求的压测
先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...
- 【转】JMeter完成一个java请求的压测
JMeter完成java请求的压力测试详解以及问题总结 原文地址:http://www.cnblogs.com/zhaoxd07/p/4895224.html 作者:KK_Yolanda 这篇文 ...
- Jmeter性能测试之如何写Java请求测试用例类
一. 引言: 最近工作中的一个项目要求做性能测试,该项目由提供服务的几个应用组成,选用的框架是阿里巴巴公司开源的服务框架Dubbo.关于Dubbo的介绍,网上也有很多资料,本人只是做了粗略的了解,没有 ...
- Jmeter二次开发——基于Java请求
简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...
- Jmeter JAVA请求入门
一.Jmeter完成一个java请求实现方法 两种实现方式: 实现JavaSamplerClient接口 继承AbstractJavaSamplerClient抽象类 二.使用AbstractJava ...
- 利用jmeter发起java请求调用shell脚本
1.创建maven项目 在pom文件中加入依赖: 2.在路径src/main/java下创建类,如类名shellclass 3. 创建jmet ...
随机推荐
- 20181114 Redis
Redis 下载 Windows版本 Windows版本 已经有很久没有更新了,建议还是使用Linux版本 Linux版本 官网下载即可 配置文件 Windows版本 redis.windows.co ...
- Golang的防坑小技巧
Golang的防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名小白,在之前没有接触到编程的小伙伴,难免会踩到一些坑,比如说刚刚入门的时候你需要安装环境,学习Gol ...
- php7 安装mssql 扩展
一. Install the Microsoft PHP Drivers for SQL Server [root@w91 source]#curl https://packages.microsof ...
- 原生js轮播图实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- #js window.open() 父窗口与子窗口的互相调用【转】
未完整版 javascript 父窗口与子窗口的互相调用 a.html 父页面 <HTML> <HEAD> <meta http-equiv="content- ...
- C# 多线程辅助类实现多任务
1)首先实现一个多线程的辅助类,代码如下: public class ThreadMulti { public delegate void DelegateComplete(); public del ...
- PHP7 学习笔记(五)安装event扩展(libevent)
一.描述:有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口. 二.下载地址:http://pecl.php.net/package ...
- buildroot构建项目(三)--- u-boot 2017.11 适配开发板修改 1
当前虽然编译成功了,但是对于我们自己的目标板并不太适用.还得做一系列得修改. 一.lds 文件分析 u-boot 中最重要得链接文件即是,u-boot.lds.我们可以查看我们编译出来得 u-boot ...
- 20155332 2016-2017-2 《Java程序设计》第6周学习总结
20155332 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 1.文件的读写 2.网络上传数据的基础 3.认识INputStream.OutputStre ...
- QDialog对话框
QDialog对话框,用来实现那些只是暂时存在的用户界面,是独立的窗口,但通常也有父窗口对话框有模态和非模态两种,,非模态对话框的行为和使用方法都类似于普通的窗口,模态对话框则有所不同,当模态对话框显 ...