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);
请求头如下
服务器断点