基于jmeter的java请求的二次开发

常用的方法:

①、addArgument("name", "value")    定义参数

②、sampleStart()    定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码

③、sampleEnd()    定义事务的结束,类似于LR的lr_end_transaction

④、setSuccessful(true、false)    设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。

二、实例介绍:

1、操作步骤:

◆ 用idea新建一个普通的java项目

◆ 引入jmeter的lib目录下的所有的jar包

◆ 编写测试类

◆ 测试类测试通过后,把项目导出为jar包放到 jmeter lib/ext目录下

◆ 启动jmeter,新建java请求,选择你编写的测试类,编写jmeter的测试用例

2、idea新建项目: file->new project->选择sdk->java ee

3、引入jmeterlib下的jar包:File –> Project Structure–> Modules->Dependencies -> + 选择Library 选择对应的jmeter目录下的lib

4、编写测试类

待测试的类

public class SercertGenerate {

  public   String generate(String[] args) {
String key = args[0];
String secret = args[1];
String method = args[2];
String path = args[3];
String gmtDate = getGMTDate(); System.out.println(gmtDate);
String signStr = "date: " + gmtDate + "\n" + method + " " + path + " HTTP/1.1"; return signStr;
} public String getGMTDate() {
DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormat.format(Calendar.getInstance().getTime());
} // public static void main(String[] args) {
//
// String[] strarray = {"7930665351","31d5b2fa00c64b25b6db60434e51ecd3","GET","/test?test=1"};
// System.out.println(generate(strarray));
//
//
//
// }
}

测试类

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.config.Arguments; public class SercertGenerateTest extends AbstractJavaSamplerClient { private String key;
private String secret;
private String method;
private String path;
private String gmtDate; private String resultData; /*
* 通过getDefaultParameters()可以来定义入参
*
* */
public Arguments getDefaultParameters() {
//定义属性对象,用来添加GUI参数
Arguments params = new Arguments();
params.addArgument("key", "");
params.addArgument("secret", "");
params.addArgument("method", "");
params.addArgument("path", "");
return params;
} //每个线程测试前执行一次,做一些初始化工作;
public void setupTest(JavaSamplerContext arg0) {
} //开始测试,从arg0参数可以获得参数值;
public SampleResult runTest(JavaSamplerContext arg0) {
key = arg0.getParameter("key");
secret = arg0.getParameter("secret");
method = arg0.getParameter("method");
path = arg0.getParameter("path");
SampleResult sr = new SampleResult();
sr.setSampleLabel("Java request");
try {
sr.sampleStart();// jmeter 开始统计响应时间标记
SercertGenerate sercertGenerate = new SercertGenerate();
// 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
gmtDate = sercertGenerate.getGMTDate(); String[] strarray = {key,secret,method,path};
resultData = sercertGenerate.generate(strarray); if (resultData != null && gmtDate != null) {
sr.setResponseData("日期结果是:" + gmtDate + "加密结果是:" + resultData, null);
sr.setDataType(SampleResult.TEXT); }
System.out.println(resultData); sr.setSuccessful(true);
} catch (Throwable e) {
sr.setSuccessful(false);
e.printStackTrace();
} finally {
sr.sampleEnd();// jmeter 结束统计响应时间标记
}
return sr;
} //测试结束时调用;
public void teardownTest(JavaSamplerContext arg0) {
// System.out.println(end);
// System.out.println("The cost is"+(end-start)/1000);
} public static void main(String[] args)
{ // 测试测试类是否有问题,打包的时候需要注释掉
Arguments params = new Arguments();
params.addArgument("key", "7930665351");
params.addArgument("secret", "31d5b2fa00c64b25b6db60434e51ecd3");
params.addArgument("method", "GET");
params.addArgument("path", "/test?test=1");
JavaSamplerContext arg0 = new JavaSamplerContext(params);
SercertGenerateTest test = new SercertGenerateTest();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
} }

5、idea导出jar包:File > Project Structure > Artifacts + > JAR > Empty 选择你的项目源文件的模块(注意:这里不是选择的web这个模块)  Build > Build Artifacts... > sampleName > Build/Rebuild

6、jar包放到jmeter的lib/ext目录后,启动jmeter,新建java请求

原文:https://blog.csdn.net/haiweizhourong/article/details/82153991

jmeter 二次开发的更多相关文章

  1. JMeter二次开发(2)-编写 JSON Assertion 插件

    本篇文章主要介绍如何对JMeter进行二次开发,添加自己所需的功能.这里以Json验证为例进行说明.在web接口测试过程中,JSON的应用已经非常普遍,但原声的JMeter并没有提供Json及Json ...

  2. Jmeter二次开发——自定义函数

    在之前的博文中,Jmeter二次开发--基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发.聊到Jmeter的函数,知道Jme ...

  3. JMeter二次开发(1)-eclipse环境配置及源码编译

    1.下载src并解压 http://jmeter.apache.org/download_jmeter.cgi   2.获取所需jar包,编译 ant download_jars ant instal ...

  4. 性能测试基础---jmeter二次开发

    ·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...

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

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

  6. JMeter二次开发环境配置

    本文主要介绍如何在Eclipse中配置JMeter开发环境. 一.下载JMeter源码 1.在JMeter官网下载二进制包和源码包: 解压备用: 二进制解压后文件夹名称为“jmeter_release ...

  7. Jmeter二次开发

    Jmater函数扩展的步骤1. 导入Jmeter源码,或使用maven项目,引入依赖的jar包 2. 继承AbstractFunction,实现自定义Function 3. 继承JMeterTestC ...

  8. jmeter二次开发----Loadrunner或Jmeter发送邮件报告

    Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送.本人使用的是mail-1.4.7.jar,可以通过下载获得:htt ...

  9. Jmeter二次开发之代码环境搭建(QQ交流群:577439379)

    一.创建项目 1. 分别下载apache3.1 binaries和source两个压缩包,前者为release版本,后者为jmeter最新的源码,下载地址:http://jmeter.apache.o ...

随机推荐

  1. MySQL备份恢复工具Xtrabackup

    参考文档https://www.cnblogs.com/youkanyouxiao/p/8335173.html Xtrabackup介绍  Xtrabackup是由percona开源的免费数据库热备 ...

  2. Db2性能:系统CPU高问题分析的一些思路

    Db2性能:系统CPU高问题分析的一些思路 1. 如何判断CPU高? 有很多操作系统的命令可以看出来,比如ps -elf,iostat, vmstat, top/topas, 2. 收集数据 CPU高 ...

  3. Kernel parameter requirements ( Linux DB2)

    Kernel parameter requirements ( Linux DB2) https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/ ...

  4. debian配置java环境变量

    操作如下 首先从Oracle上下载支持linux的java jdk,然后安装到你系统中, 然后到/home/xxxx/.bashrc文件中加入 # java JAVA_HOME=/xxx/xxxxx ...

  5. VPS常用操作(自用)

    1.screen  用来开启进程,关闭ssh或命令行后扔可以继续运行 screen screen -list screen -r xx screen -S PID -X quit 2.mono asf ...

  6. Linux内核如何装载和启动一个可执行程序(转)

    原文:http://www.cnblogs.com/petede/p/5351696.html 实验七:Linux内核如何装载和启动一个可执行程序 姓名:李冬辉 学号:20133201 注: 原创作品 ...

  7. js禁用页面上右键菜单、选中和复制

    有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...

  8. React之生命周期

    哈喽,这是我的第一篇博客,请大家多多关照~ 追根溯源:What's the lifeCycle? 生命周期函数指在某一时刻组件会自动调用执行的函数: React生命周期概览: 接下来我们就着生命周期的 ...

  9. 【SQL】SQL存储过程相关当前理解。(@temp=……)

    1.下图左侧红框中的是SQL的存储过程,是程序同SQL之间互相调用的函数.——这里先作为了解不做深入研究. 比如客户通过ATM提款机取200元钱,程序中提交取200元钱操作,后续可能会进入SQL进行一 ...

  10. Vue 通过 Lodash 限制操作频率

    <template> <div id="watch-example"> <p> Ask a yes/no question: <input ...