jmeter测试对外接口使用BeanShell生成签名

  • Post author:
  • Post category:其他


jmeter的简单应用参考

jmeter的简单应用

一般对外的接口都会使用签名进行身份和参数校验

使用jmeter测试需要签名的接口有两种办法

1.使用服务器转发请求。在服务器中生成签名并转发请求到目标服务器

2.使用BeanShell预处理程序。根据签名规则,可能需要暴露secreteKey等信息

下面介绍BeanShell预处理生成签名。

beanShell测试代码(使用DigestUtils需要导入commons-codec.jar包)

import org.apache.commons.codec.digest.DigestUtils;

String queryString = sampler.getQueryString();
String signature = DigestUtils.md5Hex(queryString);
sampler.addArgument("signature",signature);
log.info(signature);

这里我直接使用apache下的commons-codec包将请求参数(userName=wl&password=123456)生成MD5值,并添加到请求参数中。请根据您的签名算法自行生成签名。

导入commons-codec.jar 包(根据您的签名算法导入需要的jar包)

请求信息

服务器获取签名

内置对象sampler javadoc参考

https://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/HTTPSampler.html

HeaderManager.java   javadoc

https://jmeter.apache.org/api/org/apache/jmeter/protocol/http/control/HeaderManager.html

如果您的签名参数是存放在请求头header中,您可以通过HeaderManager 将签名存放在请求头中。代码如下


import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;
import org.apache.commons.codec.digest.DigestUtils;

String queryString = sampler.getQueryString();
String signature = DigestUtils.md5Hex(queryString);

//放在请求参数中
sampler.addArgument("signature",signature);

//放在请求头中
HeaderManager headerManager = new HeaderManager();
headerManager.add(new Header("signature",signature));
sampler.setHeaderManager(headerManager);

请求头如下

服务器断点



版权声明:本文为name_is_wl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。