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 ...
随机推荐
- C#中字符串转换为计算公式(自定义公式的计算)
第一种解决方案 第一种也是功能最强大的一种,可以使用Eval函数,像在Java中一样强大,几乎所有的运算符都可以实现,包括四则运算,与或非等. 添加COM引用: private void button ...
- sql语句 isnull(列名,'')='' /STUFF的意思
(1) SELECT SYXH,ZYHM,YEXH,ISNULL(YETZ,'') AS YETZ ,RYKSMC,RYBQMC,HZXM FROM YG_BRSYK 如果列名数据等于NULL,那么 ...
- python中的风险
from math import e print(e) e = "中华人民共和国1" print(e) 输出: 2.718281828459045 中华人民共和国1 用from方式 ...
- 一个生产可用的mysql参数文件my.cnf
[client]#客户端选项设置#设置客户端和连接字符集default_character_set = utf8port = 3306socket = /opt/mysql-5.6.24/tmp/my ...
- iOS知识点持续更新。。。
1.自动布局拉伸和压缩优先级 Autolayout中每个约束都有一个优先级,优先级的范围是1~1000.创建一个约束,默认的优先级最高是1000. Content Hugging Priority:该 ...
- kubenets installation--ranchor-mesos
[kube-proxy]http://www.cnblogs.com/xuxinkun/p/5799986.html [flannel] 安装Flannel [root@master ~]# cd ~ ...
- 把MP3保存到数据库中
使用JdbcUtils得到连接con java.sql包下的Interface Blob----其实现类SerialBlob Blob是一个可以存储二进制文件的容器. BLOB常常是数据库中用来存储二 ...
- DbGridEh 一个单元格的值改变时另一单元格的值随之改变
你可以为每个字段设置OnSetText事件,这样在输入完后回车会移动时就会触发,或者在adoquery的beforepost中或afterpost中都可以grid也提供了一些事件,也可以在某些条件下做 ...
- canvas将图片转成base64格式 以及 验证图片是否透明
logoImgUpload:function(file) { let self = this; self.formatUpload(file); let reader = new FileReader ...
- CSS中position属性介绍(新增sticky)
position的含义是指定类型,取值类型可以有:static.relative.absolute.fixed.inherit 和 sticky,这里sticky是CSS3新发布的一个属性. 1.po ...