jmeter 二次开发
基于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 二次开发的更多相关文章
- JMeter二次开发(2)-编写 JSON Assertion 插件
本篇文章主要介绍如何对JMeter进行二次开发,添加自己所需的功能.这里以Json验证为例进行说明.在web接口测试过程中,JSON的应用已经非常普遍,但原声的JMeter并没有提供Json及Json ...
- Jmeter二次开发——自定义函数
在之前的博文中,Jmeter二次开发--基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发.聊到Jmeter的函数,知道Jme ...
- JMeter二次开发(1)-eclipse环境配置及源码编译
1.下载src并解压 http://jmeter.apache.org/download_jmeter.cgi 2.获取所需jar包,编译 ant download_jars ant instal ...
- 性能测试基础---jmeter二次开发
·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...
- Jmeter二次开发——基于Java请求
简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...
- JMeter二次开发环境配置
本文主要介绍如何在Eclipse中配置JMeter开发环境. 一.下载JMeter源码 1.在JMeter官网下载二进制包和源码包: 解压备用: 二进制解压后文件夹名称为“jmeter_release ...
- Jmeter二次开发
Jmater函数扩展的步骤1. 导入Jmeter源码,或使用maven项目,引入依赖的jar包 2. 继承AbstractFunction,实现自定义Function 3. 继承JMeterTestC ...
- jmeter二次开发----Loadrunner或Jmeter发送邮件报告
Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送.本人使用的是mail-1.4.7.jar,可以通过下载获得:htt ...
- Jmeter二次开发之代码环境搭建(QQ交流群:577439379)
一.创建项目 1. 分别下载apache3.1 binaries和source两个压缩包,前者为release版本,后者为jmeter最新的源码,下载地址:http://jmeter.apache.o ...
随机推荐
- vins-mono调试教程
https://www.cnblogs.com/Jessica-jie/p/6950604.html
- [No0000187]可能是把Java内存区域讲的最清楚的一篇文章
写在前面(常见面试题) 基本问题: 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针 ...
- [No000013E]用VSCode写python的正确姿势
最近在学习python,之前一直用notepad++作为编辑器,偶然发现了VScode便被它的颜值吸引.用过之后发现它启动快速,插件丰富,下载安装后几乎不用怎么配置就可以直接使用,而且还支持markd ...
- [No0000C3]StarUML2 全平台破解方法
首先,找到安装目录下的"LicenseManagerDomain.js"文件,路径"StarUML\www\license\node\LicenseManagerDoma ...
- transformations 变换集合关系 仿射变换
http://groups.csail.mit.edu/graphics/classes/6.837/F03/lectures/04_transformations.ppt https://group ...
- 运行或开发.NET Core 的先决条件(支持项目、依赖项)
Windows 上 .NET Core 的先决条件 https://docs.microsoft.com/zh-cn/dotnet/core/windows-prerequisites?tabs=ne ...
- 待选框、目标框select项目左右移动
效果: 可以用一般的select multiple="multiple".自己写jq定义左移.右移.全部左移.全部右移.保存submit后端来操作select属性,方法参考html ...
- [knowledge] big data things
http://hadoop.apache.org/ https://spark.apache.org/ https://nifi.apache.org/ https://www.cloudera.co ...
- c++ Stl 随笔
1. template <class InputIterator, class Distance> void advance (InputIterator& it, Distanc ...
- C++生成静态库
//StaticMath.h #include <iostream> class StaticMath { public: //StaticMath(void); //~StaticMat ...