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

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);

jmeter测试对外接口使用BeanShell生成签名_第1张图片

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

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

jmeter测试对外接口使用BeanShell生成签名_第2张图片

请求信息

jmeter测试对外接口使用BeanShell生成签名_第3张图片

服务器获取签名

jmeter测试对外接口使用BeanShell生成签名_第4张图片

 

内置对象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);

请求头如下

jmeter测试对外接口使用BeanShell生成签名_第5张图片

服务器断点

jmeter测试对外接口使用BeanShell生成签名_第6张图片

你可能感兴趣的:(jmeter)