jmeter java接口_使用jmeter进行压测java接口(dubbo)

55158867d211b0dd62870d22899402e5.png

757092

757092将工程打成jar包之后,会有一些外部依赖资源需要手动添加进jmeter的class path中,比如如图etc和libs两个文件夹下引用的file或jar,另外如果是maven项目,所有pom中依赖的私服jar包,需要在本地全部单独建一个文件夹存放,并添加进class path,如下图:

f30e14ec636df7a0cdee05068d02af00.png

jar包在此添加

c31227d7f3c4c799c4e5411aa9c0dc08.png

etc下的file,直接手动放至jmeter安装路径的bin下:

d5ad5226d3abf26852c9bf452b66634b.png

2、

修改jmeter初始化内存

windows环境下,修改jmeter.bat

c011db1a9495a4e4121e56bdc8f68cb6.png

根据经验,heap最多设置为物理内存的一半,默认设置为512M.如果heap超过物理内存的一半,可能运行jmeter会慢,甚至出现内存溢出,原因java比较吃内存,占CPU.

注意:JDK32位的电脑Xmx不能超过1500m,最大1378m.否则在启动Jmeter时会报错

linux环境下,修改jmeter.sh:

java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"

二、白盒测试代码编写

1、白盒编写所需jar

de66b85324acc749afab8aa66e47bc4f.png

红色所标识的,是编写与在jmeter上运行白盒测试代码必须的jar包,因为会引用到相关几个关键类;

黄色部分,是在你想直接在eclipse上,对白盒测试代码添加main方法进行单元调试时,所需的,但不是必须,也可以将整个工程打成jar包后放至jmeter中调试,当然,那样比较麻烦。

2、白盒测试代码编写规范

38d375e49fe2a094580058d79de9786b.png

红色所标识的即为开发源码,在其路径下新建一个测试类,即黄色所标识,即为我们的白盒测试代码类

测试代码共分几部分:

(1)继承AbstractJavaSamplerClient类

9fd61037ee7a64ea2c8e56f403ec35cd.png

(2)定义全局变量

491e4b1cdafadf7cc6d1fd7c8a9a62fb.png

(3)重写AbstractJavaSamplerClient四个方法

getDefaultParameters

605cab143874ce777f392e82edb4beb0.png

setupTest

5908eccc5e50b9da233e322ba78168f4.png

runTest

03480038ac9f7e3860dcded35350a1b6.png

注:网上的教程都是在runTest中先实例化本类,如图

CTVCTest commonTVConsumer = new CTVCTest();

然后再由commonTVConsumer去调用被测接口,如:

List result = commonTVConsumer.tvDataService.getHotProgram(a, g, Integer.parseInt(h));

但注意,CTVCTest.java中的tvDataService是经过在setupTest中赋值了的,

tvDataService = (TVDataService) context.getBean("tvDataService");

但如果在runTest中又new一个CTVCTest.java的实例,再去commonTVConsumer.tvDataService,调用的又变成在全局变量中刚刚定义的未赋值的变量了:

public TVDataService tvDataService = null;

所以此时一定会报空指针。所以,这里尤为需要注意线程与实例保持统一!所以如上图,这里干脆直接使用赋值后的tvDataService:

tvDataService.getHotProgram(a, g, Integer.parseInt(h));

----------------------------

teardownTest

817382c2d00934710540ed3d97665725.png

main(自己单元调试,非必需,打jar包时最好注释掉)

07237106d19742e862b6a73565d52c3c.png

这里可以清晰的看到jmeter在单线程里的调用流程,所以在runTest中其实不能再去实例化一次,或者也没必要实例化后再调一次setupTest等,保持在一个线程与实例下调用的是同一个变量就行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值