JMeter——异步请求性能测试

前段时间任务要求要对一种异步请求作性能测试,异步请求步骤以下:html

step1: 发一个数据计算的请求,response里面返回一个jobIdjava

step2: 带上这个jobId,就能够实时查看这个请求返回的jobStatus, 若是jobStatus==0, 则成功返回计算结果;若是jobStatus==2,则表明job in progress;若是jobStatus==3,则表明job in failure.apache

 

个人思路:异步

1. 怎样把step1和step2包裹起来,成为一个总体,由于这个总体花费的时间,才是整个异步请求的响应时间。性能

solution: 我用了一个Transaction Controller, 把这两步构成了一个总体。它的用法可参考:http://jmeter.apache.org/usermanual/component_reference.html#Transaction_Controller测试

 

2. 怎样隔一段时间就去查看一下job status, 而且根据返回的job status来判断是否计算完成并返回计算结果了。component

solution: 我在step2上包裹了一个While Controller内加一个Constant Timer, 前者控制不断发送step2的请求直到返回计算结果,后者设定每隔多久发送一次。最后还加了一个BeanShell PostProcessor去多条件控制循环结束。htm

condition script for While Controller is:blog

${__javaScript("${flag}"=="0" && "${jobStatus}"!="0")}ip

 

BeanShell PostProcessor script is:

String jobStatus = vars.get("jobStatus");

log.info("jobStatus:"+jobStatus);

if(jobStatus.equals("0")){

log.info("AssetUnderManagement data returned successfully!");

vars.put("flag","1");

}

if(jobStatus.equals("3")){

log.info("AssetUnderManagement data calculate in failure!");

vars.put("flag","1");

 

 再次推荐,全部JMeter component的用法均可以查阅官网:http://jmeter.apache.org/usermanual/component_reference.htm

相关文章
相关标签/搜索