使用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请求的更多相关文章

  1. 性能测试十二:jmeter进阶之java请求参数化

    如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...

  2. jmeter中实现java请求实战日志

    view code public class JdbcInsert implements JavaSamplerClient { // 全局变量 PreparedStatement pstmt; Co ...

  3. jmeter之自定义java请求性能测试

    一.环境准备         1.新建一个java工程         2.导入jar包:ApacheJMeter_core.jar     ApacheJMeter_java.jar         ...

  4. 【JMeter】JMeter完成一个java请求的压测

    先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...

  5. 【转】JMeter完成一个java请求的压测

    JMeter完成java请求的压力测试详解以及问题总结 原文地址:http://www.cnblogs.com/zhaoxd07/p/4895224.html    作者:KK_Yolanda 这篇文 ...

  6. Jmeter性能测试之如何写Java请求测试用例类

    一. 引言: 最近工作中的一个项目要求做性能测试,该项目由提供服务的几个应用组成,选用的框架是阿里巴巴公司开源的服务框架Dubbo.关于Dubbo的介绍,网上也有很多资料,本人只是做了粗略的了解,没有 ...

  7. Jmeter二次开发——基于Java请求

    简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...

  8. Jmeter JAVA请求入门

    一.Jmeter完成一个java请求实现方法 两种实现方式: 实现JavaSamplerClient接口 继承AbstractJavaSamplerClient抽象类 二.使用AbstractJava ...

  9. 利用jmeter发起java请求调用shell脚本

    1.创建maven项目 在pom文件中加入依赖:     2.在路径src/main/java下创建类,如类名shellclass                     3.      创建jmet ...

随机推荐

  1. 20181114 Redis

    Redis 下载 Windows版本 Windows版本 已经有很久没有更新了,建议还是使用Linux版本 Linux版本 官网下载即可 配置文件 Windows版本 redis.windows.co ...

  2. Golang的防坑小技巧

    Golang的防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名小白,在之前没有接触到编程的小伙伴,难免会踩到一些坑,比如说刚刚入门的时候你需要安装环境,学习Gol ...

  3. php7 安装mssql 扩展

    一. Install the Microsoft PHP Drivers for SQL Server [root@w91 source]#curl https://packages.microsof ...

  4. 原生js轮播图实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. #js window.open() 父窗口与子窗口的互相调用【转】

    未完整版 javascript 父窗口与子窗口的互相调用 a.html 父页面 <HTML> <HEAD> <meta http-equiv="content- ...

  6. C# 多线程辅助类实现多任务

    1)首先实现一个多线程的辅助类,代码如下: public class ThreadMulti { public delegate void DelegateComplete(); public del ...

  7. PHP7 学习笔记(五)安装event扩展(libevent)

    一.描述:有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口. 二.下载地址:http://pecl.php.net/package ...

  8. buildroot构建项目(三)--- u-boot 2017.11 适配开发板修改 1

    当前虽然编译成功了,但是对于我们自己的目标板并不太适用.还得做一系列得修改. 一.lds 文件分析 u-boot 中最重要得链接文件即是,u-boot.lds.我们可以查看我们编译出来得 u-boot ...

  9. 20155332 2016-2017-2 《Java程序设计》第6周学习总结

    20155332 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 1.文件的读写 2.网络上传数据的基础 3.认识INputStream.OutputStre ...

  10. QDialog对话框

    QDialog对话框,用来实现那些只是暂时存在的用户界面,是独立的窗口,但通常也有父窗口对话框有模态和非模态两种,,非模态对话框的行为和使用方法都类似于普通的窗口,模态对话框则有所不同,当模态对话框显 ...