【干货】JMeter BeanShell 应用-阿里云开发者社区

开发者社区> 余二五> 正文

【干货】JMeter BeanShell 应用

简介:
+关注继续查看

不废话直接上场景


场景1:业务单据参数化时要生成一组(多个时间,比如订单日期,发货日期等)未来的时间,运用JMeter提供的时间函数并不能较好的完成


场景2:测试Java接口,确又不想继承AbstractJavaSamplerClient 来完成,此时可以用BeanShell Sampler来完成


场景3:线程共享变量,我们希望线程之间共享一个变量,可以利用BeanShell来完成


其它功能自己类推......


场景1:生成订单日期与发货日期,然后放入变量

wKioL1Ycc9qi9yoFAAJwNRi9f7k478.jpg


代码方便复制粘贴

[java] view plaincopyprint?

  1. import java.text.SimpleDateFormat;

  2. import java.util.Calendar;

  3. import java.util.Date;


  4. Date date = new Date();

  5. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

  6. String nowDate = sf.format(date);

  7. Calendar cal = Calendar.getInstance();

  8. cal.setTime(sf.parse(nowDate));

  9. cal.add(Calendar.DAY_OF_YEAR, +3);

  10. String chanceDate = sf.format(cal.getTime());

  11. cal.add(Calendar.DAY_OF_YEAR, +7);

  12. String planFinishDate = sf.format(cal.getTime());

  13. vars.put("orderDate",chanceDate);

  14. vars.put("delivery",planFinishDate);


这里的 orderDate delivery 在Vars中,在JMeter中是以Map的形式存放的,我们只需要${变量名}来引用,变量能够保证数据一致性(简单说就是线程互不干扰)。走起,调用试试:


1.Java请求调用

wKioL1Ycc-nBAnCJAAFJ0ph6MoM896.jpg


2.结果树中察看

wKioL1Ycc_WDG-3AAAEWxPKOMNY243.jpg


如果这两个时间(orderDate,delivery)在测试过程中只需要生成一次,可以把BeanShell Sampler 放在仅一次控制器下,这样性能更加。


场景2:

下面BeanUtil是一个接口程序,已经打包BeanShell.jar,现在测试其中的getUserName与getAddress方法


640?wx_fmt=png&wxfrom=5&wx_lazy=1

直接用BeanShell Sampler到调用接口方法:

wKiom1Ycc-OBywplAAHHbN4BQvk821.jpg


上图中,我们简单的调用了getUserName()与getAddress()方法

log.error是在控制台输出结果(仅仅调试的时候用,正式测试时去除掉)。


vars.put()是把取得的结果放到变量,供下一个Sampler调用()。

当然有个最得要的部分别忘记了,接口包BeanShell.jar要放到%JMETER_HOME%\lib目录(建议),当然你也可以在测试计划中加入(不建议)


如下图:


wKioL1YcdA_wCRPyAAGCSdlK-aM484.jpg

如果 BeanShell.jar(你的包名可以任意取名)依赖别的包,那么它所依赖的包也要一道放到%JMETER_HOME%\lib目录。


场景3

线程共享变量


 JMeter中线程间共享变量可以通过定义属性值来完成,JMeter启动时会读取一些属性文件,比如jmeter.properties、user.properties,这些属性


值是可以增加的,也可以修改的,通过BeanShell可以对其进行更改。

 以BeanShell Sampler为例,在其中通过props.put()来增加属性,props.get()来获取属性。


 在其它Sampler中,比如Java Sampler中通过 ${__property(【属性名称】,,)}来获取。

  wKiom1YcdAGBvoWRAAK0X_3rOiE907.jpg

   

各类视频汇总地址:http://xqtesting.blog.51cto.com/4626073/1669386










本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/1702447,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
(转) GAN应用情况调研
    本文转自: https://mp.weixin.qq.com/s?__biz=MzA5MDMwMTIyNQ==&mid=2649290778&idx=1&sn=9816b862e167c4792f4251c199fcae16&chksm=8811ee5cbf66674a54e87bc3c...
1209 0
【我的Android进阶之旅】Android 如何防止 so库文件被未知应用盗用?
首先,关于Android 如何防止 so库文件被未知应用盗用这个话题并不是我擅长的,只是在开发中遇到了这个问题,因此在这里总结一下。 故事回到几个月之前,当时公司和第三方音乐平台合作了一款内置于手表系统的音乐APP应用,合作过程中需要第三方提供so库文件来进行相关操作。
1584 0
【1026 - 1030直播导视 | PPT 下载】阿里专家直播:EasyTransfer平台应用实践、大数据+AI meetup 2020第二季·上海场来啦!
本周为大家带来了8场技术公开课,技术学习实践两不误!开源日迎来第六期啦线上对话阿里云专家:为大家带来EasyTransfer平台应用实践;大数据+AI meetup上海专场来啦!大家快办好小板凳坐等下周技术专场吧!
3453 0
『干货』阿里研究员徐盈辉:在线AI技术在搜索与推荐场景的应用
整体搜索/推荐希望建立一个Close-loop for iCube learning体系,其中iCube要求系统具备immediate、interactive、intelligent的能力。
12942 0
【干货】Work at Alibaba 阿里企业应用构建揭秘
作为一个拥有数万名员工的企业,阿里巴巴的企业信息化是怎么做的?阿里巴巴企业智能事业部资深技术专家叶建辉为大家揭晓谜底。
1439 0
【Based Android】让你的android应用使用可爱的iphone备忘录字体
用过iphone的朋友一定会很记得ios系统自带的备忘录,里面的字体非常的可爱,所以大家有没有想过把这个字体弄到你的android设备中呢?                    其实android提供了非常方便的字体导入了方法了,这里不得不提到一个几乎快被大家遗忘了的一个文件夹assets.
599 0
如何使用 GeoTrellis 和 React 构建地理处理应用程序
这篇博文是使用 GeoTrellis、Akka HTTP和 React 创建GIS处理的网页应用程序的指南。翻译自凯利·英尼斯 (Kelly Innes)的博客。
160 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载