性能测试中级探索——Jmeter Beanshell

发表于:2019-3-11 13:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Boris    来源:搜狗测试

#
Jmeter
  Jmeter BeanShell
  1、背景
  大家好,最近小编遇到一个接口性能测试需求,对接口传输idno、mobile的32位小写md5值,并对两者的md5值进行加盐(相当于二次加密,所谓“加盐”实现的方式是将每一个口令同一个叫做”盐“(salt)的n位随机数相关联),将三个参数共同传给接口,要求并发量保持在20进行稳定性测试,并测试接口的返回进行正确性验证。现在我们来分析一下需求:
  对接口传输不同的idno、mobile、salt
  idno、mobile加32位小写md5
  idno_md5、mobile_md5加盐
  并发稳定在20
  验证稳定性
  验证接口返回数据内容包含“yes”,响应码200
  首先,对接口传输不同的idno、mobile:这一步很简单,我们可以将不同的idno、mobile放入csv文件中,在Jmeter中使用”CSV数据文件设置”读取id、mobile,然后在Options-Function Helper中找到__MD5 ,即可实现MD5加密(注意,在Jmeter4.0后__MD5函数已经替换为__digest),使用方法:${__digest(MD5,Errare humanum est,,,)};
  △Jmeter中使用MD5加密函数
  或者懂VBA的朋友,直接用Excel打开csv文件,将写好的参数进行MD5批量加密即可=LOWER(Md5_String_Calc(**))
  其次,对idno、mobile的md5值进行加盐:到这一步,通过Jmeter自带的函数或者VBA都无法满足我们的需求了,我们自然想到——把加盐算法写入代码,通过代码实现;我们又想到——Jmeter不就是纯Java写出来的,自然能支持Java吧;搜狗搜索一下”Jmeter java”,发现一个叫Jmeter Beanshell的东西。
  2、Jmeter Beanshell
  Beanshell是Jmeter中最复杂的内置组件之一,它的原理是一个嵌入式的Java源码解释器,不仅能够执行java应用程序,同时也使用Jmeter本身的API。 使用beanshell,只需在Thread Group-右键ADD-Pre Processors-BeanShell PreProcessors,如下图,其中’Script’窗口便是写入核心脚本的地方。
  △Jmeter BeanShell PreProcessors窗口
  3、Beanshell的使用场景
  3.1、内置变量操作
  Beanshell可以通过Jmeter本身的已内置的对象vars对变量进行get与put:
   vars.get("id"); //获取jmeter内的id变量
  vars.put("key", "value"); //将value值存储至key中,回传给jmeter,此时jmeter的其它组件如User Defined Variables便可以对其进行使用
  3.2、内置属性操作
  Beanshell可以通过props对属性进行简单的存取:
   props.get("PROPERTIES"); //获取名为PROPERTIES的属性名
  props.put("PROPS","value"); //将value放入PROPS属性中
  3.3、定义函数
  Beanshell支持使用Java对函数进行定义,用于处理业务中的特定逻辑,以实现对内置变量的灵活存取,例如,在Test Plan中添加用户自定义变量(User Defined Variables)test1
  △添加用户自定义变量User Defined Variables
  在Beanshell Script中写入一个put相关的脚本
  △脚本写入
  此时,对于Jmeter来说,新增的”test2”变量,被赋予了”value2”的值;而已经在User Defined Variables中定义好的”test1”变量,被重新赋予了”value3”的值。
  3.4、引入Jar包
  到此为止,我们了解到可以通过Jmeter Beanshell将md5加密方法写入jmeter beanshell中,通过CSV Data Set Config读取不同的idno,mobile实现对测试2参数加密,但加盐方法仍没有实现,此时,最简单的方法是将加盐的方法打成jar包,直接引入,并在beanshell中进行调用。
  引入方法:
  Test Plan→Add directory or jar to classpath→Browse→添加需要引入的jar包即可
  △jar包引入步骤
  此时在beanshell中直接调用import salt.jar,即可使用其中的加盐方法。到此为止,通过使用Jmeter Beanshell,我们完全可以快速实现本次的性能测试需求了。
  4、结束语
  Jmeter内置Beanshell强有力地支持了大部分的对测试变量灵活配置或设置的需求,它支持Java语法,并使用松散类型、命令、方法表等功能拓展其支持范围。如果Jmeter本身的嵌入式测试组件已无法支持我们的测试用例,那么Beanshell可以成为实现测试目的最佳选择。

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号