Jmeter之BeanShell的使用

Jmeter之BeanShell的使用,第1张

背景:在一次接口压测过程中,接口的参数值是通过java类中的方法获取的,此方法没有封装成接口,又因参数值存在有效期(15min),所以导致在执行压测的过程中需考虑在执行的时长内参数值是否失效的问题。

在未使用beanshell的时候(当时不知道如何使用,且时间紧,没时间研究),就先在IntelliJ Idea运行Java程序获取参数值,然后将参数值复制出来粘贴到jmeter中,然后再执行脚本进行压测。暂时不影响测试,但是 *** 作起来有点麻烦。

趁着测试工作结束,正好有时间研究下jmeter中beanshell的使用,总结如下:

1、先将java程序打成jar包;

打jar包参考: https://www.cnblogs.com/xianz666/p/14101811.html

2、将1中jar包复制到jmeter安装路径D:\Program Files\apache-jmeter-5.3\lib\ext\下,如果jave程序中有引用到其它jar包(import导入的),也一并复制到该目录下;

3、启动jmeter,在测试计划右侧页面下方,添加2中复制的jar包:

4、然后在测试计划下,创建线程组,添加BeanShell取样器,在取样器右侧页面脚本处,编写java脚本:

注:脚本可接收传参,参数传入方式:${参数名1} ${参数名2} ...,参数之间用空格隔开,在脚本中可使用bsh.args[i]获取参数值,i表示参数在数组中的索引。参数的定义,放在用户定义的变量中,在线程组下添加用户定义的变量:

5、在线程组下添加HTTP请求,在消息体数据中传递请求参数(json):

6、在线程组下添加查看结果数,执行HTTP请求,查看结果树中请求body中的参数(成功获取):

至此,使用BeanShell的方式成功传参,解决了手动获取参数的麻烦。

1.设置用户自定义变量,ddd 值设置为随机数 ${__Random(10,500,)}。

尝试从HTTP请求中直接获取参数获显示总是空,从用户自定义参数中可以获取到,因此加个该菜单,为了获取随机值,在进行签名。

2.设置BeanShell PreProcessor

在parameters中设置需要参数化的变量

如下图:

3.添加Debug Sampler

4.运行查看结果树

5.调试成功后,将参数化参数写到HTTP请求中,进行请求

6.最终结果

工具/原料

jmeter

eclipse

方法/步骤

通常用jmeter做http请求(或者其他类型)时,有时候要对请求的数据(或者响应的数据)进行特定的处理再进行请求,如加密、解密。

这时候我们可以用java自己写一些工具类,利用jmeter提供的beanshell来调用我们的工具类对数据进行处理,然后再进行相关的请求。

首先在eclipse写个属于自己的工具类,我写了一个根据左右边界截取字符串的工具类GetStringWithLBRB.java,“选择”你所有写的类文件,“右击”选择导出,“导出”jar包(随便命名,记住该类在eclipse中的包路径即可)

然后将导出的jar包放到\apache-jmeter-2.12\lib\ext目录里,在jmeter中创建一个项目,添加一个http request,在这个请求里我们添加一个前置beanshell。

在beanshell中导入我们的jar包(包路径既我们在eclipse中看到的路径),beanshell中的两个方法是我们最常用到的:vars.get(String paramStr)、vars.put(String key,String value),前一个是从jmeter中获得变量值,后一个是将数据存到jmeter变量中。

比如:

jmeter中有参数param1,那么我们在beanshell中就可以通过

String param2 = vars.get(param1);

这样param2就获取到了jmeter中的参数param1的值了。

再比如:

String paramName=“abc123def”;

String paramName1=paramName.Substring(3,6)

vars.put(“paramName”,paramName1)

这样paramName作为参数就存到jmeter中,我就能在jmeter下面步骤中使用${paramName}获取到我处理后的值了。

这样对于请求前要加密、请求后要解密的情况,我们就能自己写工具包进行相关数据处理了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11380950.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存