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 ...
随机推荐
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器.如果用C语言来解释,可以把这些寄存器当作变量看待. 比 ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
- TCP协议和TCP/IP(簇)
TCP协议(传输层) 用于应用程序之间的通信. 连接的建立是经过三次握手,断开的时候四次挥手. TCP 包头很复杂,但是主要关注五个问题,顺序问题,丢包问题,连接维护,流量控制,拥塞控制 状态位例如: ...
- 安装ReactNative开发IDE
https://blog.csdn.net/u014484863/article/details/51554428 https://github.com/reactnativecn/react-nat ...
- 使用Sqlserver事务发布实现数据同步(sql2008)_Mssq l数据库教程
事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布 ...
- WinForm将一个窗体的值传到另一个窗体的listbox控件,C#
做arcgisengine二次开发,读取当前图层文件的字段值,别名,类型. 读取文件是在有地图图层的窗体(假设为Form1),由于窗体有限,所以想把读取的数据在另一个窗体(假设为Form2)显示出来 ...
- book_lsit
@ 学习go的轮廓.核心.难点 必看 <代码的未来> 3.2 Go ~page 123~ @ 学习内存架构.内存管理的入门.原理 必看 <操作系统之哲学原理>邹恒明 @ ...
- SortedMap与TreeMap的一个典型应用
一下是在项目中的应用. msg.getContent()共有四种类型. public SortedMap<String, List<ActivityMsg>> queryTri ...
- redis有序集合性能 列表、集合、有序集合
https://www.cnblogs.com/pirlo21/p/7120935.html 1.1 列表 列表(list)类型是用来存储多个字符串,元素从左到右组成一个有序的集合.列表中的每个字符串 ...
- AndroidStudio_TextView
写APP的工具为:AndroidStudio 主要在两种文件里编辑代码:.xml和.java(.xml里主要是调整布局相当于APP的前端 .java主要是写Java程序相当于APP的后端) 代码的调试 ...