使用场景:当用jmeter发请求的时候,请求头里面需要添加sign签名,sign签名的生成规则一般都是通过请求参数拼接加密得到的,这时候我们就需要自己写个sign签名的方法,导成jar包在jmeter中去引用。

(在网上看到说使用jmeter自带的函数助手也能实现该功能,但是我试了下好像不行,不知道是不是哪里弄错了。。)

一、准备好jar包

(前提是自己电脑上已经装好Java环境了哦~)

1、在idea中新建一个Maven项目,就写一个自己测试的类吧

刚开始的目录结构如下所示

Hello类是我写的一个用来生成sign签名的类,Test类是为了测试Hello类中的方法是否可以被调用调通。

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar包

 2、将写好的类导出jar包

在idea中,点击 File -> Project Structure

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar包_02

在project structure中选择 Artifacts-> +号 -> JAR -> From modules with dependencies...

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_Java_03

 然后选择程序执行的入口(这边我选择的时Hello类,前提是Hello类中要有main方法。试了下如果选择的是别的有main方法的类导出的jar包执行时会报错,不知道为什么?)

我的配置如下的第二张和第三张图片所示:

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_Java_04

 

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_Java_05

 

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar_06

 点击apply->ok

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar包_07

点击 Build -> Build Artifacts

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_Java_08

 点击...jar -> Build

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar包_09

 至此,jar包就打包好了,然后cmd进入到jar包所在目录验证jar包是否能够正确运行。

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar_10

java -jar test-code.jar 下图中看到正常执行,说明导出的jar包是正确的

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar_11

 二、jmeter中导入jar包并使用

因为我的接口请求头需要用到sign签名,所以我这边使用的是Beanshell预处理程序

(在发送请求前通过这个预处理程序生成sign签名等其他的需要的参数,个人理解是预处理程序就相当于Java写接口测试的前置操作)

1、将第一部分生成的jar包导入到jmeter目录\apache-jmeter-5.0\lib\ext下

2、打开jmeter,添加一个线程组,在线程组下添加一个BeanShell PreProcessor和一个http取样器

3、在beanshell PreProcessor中导入我们的jar包,调用里面的生成sign方法,把结果保存在jmeter变量中,下面两个方法是beanshell中我们最常用到的:

  • vars.get(String paramStr):获得变量值
  • vars.put(String key,String value):,将数据存到jmeter变量中

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar_12

上图中的3个变量,在http信息头管理中有调用,如下:

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_Java_13

 请求头中调用结果如下:

说明调用成功~

idea jmeter 引用Java的jar 在jmeter 引入jar包的功能_jar包_14

****** 这个例子是使用Beanshell PreProcessor的,使用Beanshell Sampler是一样的结果,都是可以成功的。(感兴趣自己可以试一下)

三、什么是Beanshell?

  • BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
  • BeanShell是一种松散类型的脚本语言(这点和JS类似);
  • BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。
  • BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。

更多功能可以去官网查看,官网:http://www.BeanShell.org/