
在未使用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}获取到我处理后的值了。
这样对于请求前要加密、请求后要解密的情况,我们就能自己写工具包进行相关数据处理了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)