0


Jmeter异步请求-事物控制器和While Controller的用法

背景:对异步请求进行一个简单的压测,那就需要对异步请求多次查询,然后根据查询结果进行其他的数据请求.这里还有一个问题就是,我们的请求数据需要加密,返回数据也是密文,需要解密.

解决思路:

1.请求数据需要加密请求,那就需要添加前置处理器Bean Shell PreProcessor,进行加密处理请求;

2.异步请求需要多次查询,既然要性能,那就需要统计多次查询的时间,所以将查询放到一个逻辑控制器中-事物控制器,然后勾选 Include duration of timer ....,即相当于用户进行一系列操作的测试时间,只有整个事务控制器定义的事务成功,才算成功。

3.根据定时器设置的时间,需要对异步请求多次查询,直到状态变化然后进行下面的操作,所以需要用到逻辑控制器中-While Controller,然后加一个定时器-固定定时器;

4.响应数据需要解密并显示在查看结果树中,需要给请求加一个后置处理器-Bean Shell PostProcessor,并将解密后的结果设置为jmeter全局内置变量,这样结果树中显示的结果就正确了.但是,后置处理器我这里没有起作用,后来用Sampler-BeanShell Sampler实现了.

=========================================================================

解决思路就是这样,然后就是具体的操作步骤了:

PS:解决思路和操作步骤序号对应

import 自己jar包的类名;
import com.alibaba.fastjson.JSONObject; 

JSONObject map = new JSONObject();
map.put("userId", "test123");
//根据密钥加密过程
String data = RSAUtil.enStr(map.toJSONString(), "${privateKey}");
//将加密后的数据保存在临时变量中,以便在请求时通过${data}获取
vars.put("data", URLEncoder.encode(data, "utf-8"));

.

3

.

4.1 解密操作并设置jmeter的全部变量显示在结果树中

import 自己的jar包类路径.*;
//获取jmeter内置对象的响应结果
String responseResult=prev.getResponseDataAsString();
//根据密钥解密响应结果
String chargeResult=RSAUtil.deStr(responseResult,"${privateKey}");
//将解密响应结果设置给jmeter的内置对象
prev.setResponseData(chargeResult);

4.2 从解密结果中获取异步请求的查询状态

import 自己jar包的类路径.*;
import com.alibaba.fastjson.*;

prev.setResponseData(RSAUtil.deStr(prev.getResponseDataAsString(),"${privateKey}"));
//保存解密后的响应结果,需要get取一下,然后后面就直接操作enResult这个变量
vars.put("enResult",prev.getResponseDataAsString());
JSONObject map = new JSONObject();
String c=vars.get("enResult");
//获取轮训结果
JSONObject jobj = JSON.parseObject(c);
//从返回结果json中获取结果
resultStatus = (String) jobj.getJSONObject("data").get("resultStatus");
//根据轮训不同的状态,设置While Controller的条件.
if (resultStatus.equals("01")) {
vars.put("resultStatus","false");}
if (resultStatus.equals("02")) {
vars.put("resultStatus","false");
} if (resultStatus.equals("00")) {
vars.put("resultStatus","ture");}

至此4个接口就完毕了,总体的架构如下

标签: jmeter

本文转载自: https://blog.csdn.net/sankoudoudou/article/details/115940096
版权归原作者 沉豆 所有, 如有侵权,请联系我们删除。

“Jmeter异步请求-事物控制器和While Controller的用法”的评论:

还没有评论