前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >通过Jmeter压测

通过Jmeter压测

原创
作者头像
用户2422633
修改于 2020-06-02 02:28:49
修改于 2020-06-02 02:28:49
1.4K0
举报
文章被收录于专栏:jmeterjmeter

最近因为要对fo-processor进行性能压测,总结一下中间使用Jmeter构建自定义mdp消息的步骤及压测步骤,

在Jmeter中,有jms的请求样例,或者你自己也可以写一个beanshell(实际上就是java语言)来做一些校验类的工作

对于系统的if-mdp,需要自定义请求。

核心步骤:

创建Java工程–> 导出自定义测试jar-->放到Jmeter的lib目录及lib\ext下-->开始测试

1、下载Jmeter,http://jmeter.apache.org/download_jmeter.cgi,我这里使用的Jmeter2.13

2、在Eclipse创建一个自定义Java工程,如图,是我创建好的一个截图:

3、引入jar包

需要从Jmeter引入的jar包,在${JMETER_HOME}/lib,${JMETER_HOME}/lib/ext

ApacheJMeter_core.jar,ApacheJMeter_java.jar,geronimo-jms_1.1_spec-1.1.1.jar,slf4j-api-1.7.10.jar,slf4j-nop-1.7.10.jar

需要额外引入的jar包,涉及到业务的定制的一些

commons-lang-2.4.jar,commons-logging-1.2.jar,f

o-inner-settlement-4.3.54.7.jar,fo-inner-settlement-api-4.3.44.4.jar,fo-processor-api-4.3.57.2.jar,

if-mdp.jar,jackson-all-1.9.2.jar,spring-2.5.5.jar,tibjms-6.0.1.jar(如果是其他JMS服务器,需要更换,比如activemq,就是替换成activemq-all.jar)

4、因为我这次的交易涉及到920(提现),925(付款到银行),所以需要在压测的时候有一个可配参数,去确定到底压测哪个交易,看代码

public class InnerSettlementTest  extends AbstractJavaSamplerClient  如果要进行自定义java请求的话,必须继承这个AbstractJavaSamplerClient抽象类

关键的几个方法:

getDefaultParameters() 如果要进行自定义参数的话,比如需求里,我需要有的时候设置925,有的时候设置920,这时候就需要这个方法

    @Override

    public Arguments getDefaultParameters() {

        //需要传哪些参数,会显示在Jmeter上

        Arguments args = new Arguments();

        args.addArgument("SettleType", "920");

        args.addArgument("Amount","1000");

        return args;

    }

runTest(JavaSamplerContext context) Jmeter会运行这个,自定义的方法,就在这里,重点见加粗加红的部分

    public SampleResult runTest(JavaSamplerContext context) {

        SampleResult sr = new SampleResult();

        sr.setSampleLabel("InnerSettlementTest");

        int settletype = 0;

        long amount = 0;

        try {

            settletype=Integer.parseInt(context.getParameter("SettleType"));

            amount = Long.parseLong(context.getParameter("Amount"));

 sr.sampleStart(); // 这个位置很重要,响应时间是从这里开始计算

            RemsInnerSettleRequestDto dto = InnerSettlementDtoFactory.getInnerSettleRequestDto(amount, settletype);//每次请求都会创建一个新的dto

            RemsInnerSettleResponseDto rsp = remsInnerSettleService.innerSettle(dto);//发送消息到tibco

            if("0000".equals(rsp.getErrorCode())){

 sr.setSuccessful(true);//什么时候成功,什么时候失败,根据业务来定

            }

            else{

 sr.setSuccessful(false);

            }

        } catch (Exception e) {

 sr.setSuccessful(false);

            e.printStackTrace();

        }finally{

sr.sampleEnd();//位置很重要,表示这一个样例跑完了,花了多久,Jmeter会统计

        }

        return sr;

    }

InnerSettlementDtoFactory这个类就不展现了,就是一个普通的工厂类,根据settletype和amount来产生一个新的请求对象

5、导出jar,Eclipse的Export就可以,不详述,我这里导出的是innersettlement-java-jmeter.jar这个名字

6、将innersettlement-java-jmeter.jar放到${JMETER_HOME}/lib/ext下,其他关联的jar放到 ${JMETER_HOME}/lib

7、重新运行Jmeter,测试自定义的请求

再创建一个监听,来监测吞吐量以及成功率,还有响应时间,我这里使用的是Aggregate Report

运行一次,得到如下结果:

可以看出,发了一个请求,718毫秒响应,成功1个,失败0个

检查一下数据库

select * from fundout.withdrawworkorder where requestdate > sysdate - 2/24/60 检查两分钟内的交易

已经成功了。。。

单笔成功了,后面可以调整并发数,来进行我们需求的压测

源码下载JmeterTestCases.zip

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
JMeter 扩展开发:自定义 Java Sampler
JMeter 内置支持了一系列的常用协议,例如 HTTP/HTTPS、FTP、JDBC、JMS、SOAP 和 TCP 等,可以直接通过编写脚本来支持相关协议的测试场景。除了这些协议之外,用户也可能需要进行一些其他标准协议的测试,或者某些情况下在标准协议基础上增加了定制化的内容,需要对定制后的协议进行测试。本文中介绍的 Java Sampler 扩展机制就是 JMeter 提供的一种可以轻松实现对新协议支持的方式。
EMQ映云科技
2022/10/20
9200
【测开技能】Jmeter二次开发之自定义java请求
在【测开技能】Jmeter二次开发之自定义函数,这次呢,我们分享一个简单的java请求的开发
雷子
2022/02/11
6200
【测开技能】Jmeter二次开发之自定义java请求
jmeter之自定义java请求性能测试
最近个人情绪不稳定、心情很不美丽,特别懒,没有博客和技术文章更新,这个文章也是迟到了一周多的时间,啰嗦完了,开始正题吧。
软件测试君
2019/07/10
1.9K0
JMeter 中实现发送Java请求
如上图,填写Project Name,然后Next,打开以Java Settings界面
授客
2019/09/11
1.1K0
JMeter 中实现发送Java请求
JMeter扩展Java请求实现WebRTC本地音视频推流压测脚本
WebRTC是Web Real-Time Communication缩写,指网页即时通讯,是一个支持Web浏览器进行实时语音或视频对话的API,实现了基于网页的视频会议,比如声网的Agora Web SDK就是基于WebRTC实现音视频通信的。与HTTP不同,WebRTC应用的主要压力是码流,JMeter没有找到提供WebRTC Sampler的第三方jar包,只能自己尝试写一个。
dongfanger
2021/03/15
2.5K1
实战Jmeter压测Dubbo服务接口
最近在做一些业务上云的项目,其中远程Rpc调用方式我们选择了Dubbo,为便于收集压测信息,我们选择了使用Jmeter来做压测工具,本文就来简单介绍如何使用Jmeter压测Dubbo服务接口,以及需要注意的事情。
加多
2018/10/30
1.8K0
jmeter对java类进行测试
对java类怎么测试,。肯定要写代码了,又要写代码,那是肯定的,不只是可以Java类的功能测试,还可以对java类进行压力测试,测试单个类或者单个java接口的压力,那么我们应该怎么测试,应该怎么写代码?听听雷子来给你说道。
雷子
2021/03/15
7920
jmeter对java类进行测试
性能工具之Jmeter压测Thrift RPC服务
利用JMeter调用Java测试类去调用对应的后台服务,并记住每次调用并获取反馈值的RT,ERR%,只需要按照单线程的方式去实现测试业务,也无需添加各种埋点收集数据
高楼Zee
2019/07/17
2.2K0
性能工具之Jmeter压测Thrift RPC服务
通过案例带你轻松玩转JMeter连载(38)
3 利用Java 请求实现 这里我们以新版本的电子商务登录作为例子。 1)在Eclipse中建立项目,在这个项目中建立api和utils两个包。 2)在包api下建立IHRMLogin.java,内容如下。
顾翔
2021/12/13
2970
通过案例带你轻松玩转JMeter连载(38)
工具篇 - JMeter组件手册04
在jmeter中提供了一系列的不同的组件,每一种组件都提供了某类功能的实现,用于支持性能测试的实施。 请看下图,jmeter的核心组件构成。 学习、研究jmeter之前,深入了解jmeter的基本组件
苦叶子
2018/04/04
1.5K0
工具篇 - JMeter组件手册04
MyCat - 测试篇
为了检测MyCat性能表现以及架构扩展性,设计测试。首先需要编写压力测试代码,程序基于Jmeter,并且封装了JDBC,模拟涅槃项目实际应用的连接方式。测试程序生成基于当前系统时间的随机数,并且保证这个随机数一秒内重复概率为百万分之一。 程序请求必须保证每个分片的请求量是一样的. 测试脚本举例:
干货满满张哈希
2021/04/12
6110
MyCat - 测试篇
软件测试|Rpc接口压测
现今有比较多的rpc框架应用于实际的生产中,像比较流行的Dubbo、Motan、 Thrift、Grpc等。今天作者将以最近项目中用到的grpc为例,结合jmeter来介绍下rpc压测实施步骤。学习本文前需对rpc框架、jmeter有个大致的了解,知道rpc如何用工具生成各种语言的代码。Grpc本身是支持很多种语言的,而jmeter本身只支持java语言,因此我们的脚本也需要选用java。
霍格沃兹测试开发Muller老师
2022/12/29
9370
性能工具之Jmeter扩展函数及压测ActiveMQ实践
首先本文将以Java扩展一个返回两个数值之和函数的例子来简单演示整个过程。 总体来说,二次开发扩展JMeter的函数可以分成下面几个步骤:
高楼Zee
2019/07/17
8400
性能工具之Jmeter扩展函数及压测ActiveMQ实践
JMeter扩展开发:自定义函数
强大的扩展性是压力测试工具 JMeter 的一个重要特点。虽然本身内置的函数、协议支持有限,但是 JMeter 提供了良好的扩展框架,允许使用者对其进行扩展。
EMQ映云科技
2022/10/13
6620
Rpc接口压测
哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢~(^▽^)PS:有问题可以联系我们哦~v ceshiren001
霍格沃兹测试开发Muller老师
2022/05/26
5640
JMeter 扩展插件实现对自定义协议的支持
我们已经在前文中介绍了如何使用 JMeter 的 Java Sampler 扩展机制轻松实现对新协议的支持。Java Sampler 方式的优点在于实现快速,只需关注协议的逻辑部分即可;但缺点是只能以参数的方式进行互动,界面可用性不高,主要用于待测试协议的原型开发。如果希望实现类似 HTTP Sampler 的界面完整友好的协议扩展,JMeter 也提供了相应的扩展机制,接下来我们将以扩展一个简单的 Apache Kafaka Producer Sampler 为例,介绍如何实现更完善的新协议插件。
EMQ映云科技
2022/11/10
6290
Rpc接口压测_rpc服务接口测试
哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(^▽^)PS:有问题可以联系我们哦v ceshiren001
全栈程序员站长
2022/11/08
7910
Rpc接口压测_rpc服务接口测试
Jmeter分布式压测环境搭建
windows环境部署 1.安装环境变量 下载JDK,可以在oracle官网下载,也可以使用百度网盘下载 链接: https://pan.baidu.com/s/1QncVzXbJmKr8jzl-f0
谭银
2022/01/26
2.1K0
MongoDB压力测试方法实践-jmeter
本文章主要讲解不同场景下,可以使用的MongoDB压测方法。并主要介绍实际业务场景下,如何使用jmeter对MongoDB压测。
刘嘉俊
2022/10/28
4.4K0
jmeter压测学习38-通过Jython调用Python脚本
前面在 BeanShell 里面是通过 java 脚本实现请求的预处理,jmeter里面也可以调用python的脚本,需安装 jython.jar 的插件. Jython 是 Python 的纯 Java 实现。她无缝地结合了 Java 类与 Python,使用户能以 Python 语言的语法编写在 Java 虚拟机上运行的 软件
上海-悠悠
2021/01/18
1.1K0
jmeter压测学习38-通过Jython调用Python脚本
相关推荐
JMeter 扩展开发:自定义 Java Sampler
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文