我想使用Apache Jmeter 2.11检查API的性能。 HTTP请求的响应数据如下:
{
"global_id": 11111,
"name": "IMG_001.JPG",
"width": "1111",
"height": "1111",
"time_taken": {
"segment_1_time": 1,
"segment_2_time": 1,
"segment_3_time": 27,
"segment_4_time": 1,
"segment_5_time": 56,
"segment_6_time": 8,
"total_time": 94
}
}
线程属性: 线程数:1, 加速期(以秒为单位):1, 循环次数:50
我想计算每个段对所有响应所采用的总平均时间,即segment_1所用的平均时间,segment_2所用的平均时间,segment_3所用的平均时间,segment_4所用的平均时间,segment_5所用的平均时间以及segment_6所用的平均时间。
计算平均段时间所需的后处理器和javascript是什么?
答案 0 :(得分:0)
我认为你需要将正则表达式提取器与 beanshell后处理器一起使用,
首先,您需要使用正则表达式提取器以及正则表达式提取您的细分值,例如 segment_1_time" :(。*?),强>等等。
接着, 使用 beanshell post processor 来计算每个段时间的总值
var CurrentSegmentValue=vars.get("SEGMENT1");//Current segment value from Regular expression extractor
log.info("CurrentSegmentValue = "+CurrentSegmentValue);
/* You need to use this logic to calculate other segment values like SEGMENT2,3,4,5,6 etc
* but remember this method makes performace bottle neck when you have tested with higher number of threads
* and result may be differ see any appropriate web links for Jmeter performance tuning and suggested to use 64 bit JVM
*/
var totalvalueString=vars.get("totalValue");
if(totalvalueString==null)
{
vars.put("totalValue","0");
}
int totalValue= java.lang.Integer.parseInt(CurrentSegmentValue)+java.lang.Integer.parseInt(totalvalueString);
vars.put("totalValue",""+totalValue);
log.info("Final Total Value:"+totalValue);
//Going to next loop
/*Divide total value with number of threads you will get your mean time*/
在上面的代码中,保存响应中的每个段值并添加前一个值。
最后你可以用线程数除以得到平均值
希望这可以帮助您并参考此链接以获取有关 bean shell scripting
答案 1 :(得分:0)