从响应中提取数据并使用jmeter计算平均值
我想使用ApacheJMeter2.11检查API的性能。HTTP请求的响应数据如下:从响应中提取数据并使用jmeter计算平均值,jmeter,jmeter-plugins,Jmeter,Jmeter Plugins,我想使用ApacheJMeter2.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
{
"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
我想计算所有响应的每个分段的总平均时间,即分段_1的平均时间、分段_2的平均时间、分段_3的平均时间、分段_4的平均时间、分段_5的平均时间和分段_6的平均时间
计算平均段时间所需的后处理器和javascript是什么?我认为您需要将正则表达式提取器与beanshell后处理器一起使用 首先,您需要使用正则表达式提取器和适当的正则表达式来提取段值,如段1时间“:(.*),等 其次,, 使用beanshell后处理器计算每段时间的总值
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*/
在上面的代码中,响应中的每个段值都被保存并与以前的值一起添加
最后,您可以将其除以线程数以获得平均值
希望这可以帮助您,并参考此链接了解有关的更多信息。如果您愿意尝试其他测试工具,您可能需要查看。下面是一个演示如何在NetGend平台上实现此场景的示例-非常简单,您不需要很多编程背景就可以理解它
祝您好运。您是指每个循环的平均响应时间吗?线程数:1,循环计数:50。这意味着总共将向服务器发送50个请求。我想计算50个响应中每个段所花费的平均时间。例如,第一个响应有“段1时间”:1,第二个响应有“段1时间”:3,第三个响应有段_1_time”:5,依此类推。段_1的平均时间为(1+3+5)/3=3。我想用这种方法计算每个段(1,2,…,6)的响应时间。谢谢你的回复@Nithin。在上面的代码中:
int totalValue=java.lang.Integer.parseInt(tt)+java.lang.Integer.parseInt(tt1);
tt和“tt1”是什么意思“引用?我使用正则表达式提取器和以下字段:引用名称:s1time,正则表达式:“segment_1_time”:(\d+),模板:$1$,匹配号:1,默认值:0,然后我在bean shell后处理器var time_s1=vars.get(“s1time”)中编写了这个脚本;字符串s1time=vars.get(“s1time”);log.info(“分段1每次响应所花费的时间(来自var)=”+时间_s1);log.info(“段1每次响应所花费的时间(来自字符串)=”+s1time)代码>但这两个都返回null。我现在无法指出任何问题,请检查以下几点,它们可能会帮助您解决问题1。检查带有通配符的正则表达式。*并在控制台中记录该值。2.检查并尝试将测试计划设计为Http采样器------>RegularExpressionExtractor------>BeanShell后处理器3。您还可以使用JSON路径提取器() 从Jmeter插件插件(Free)到解析json响应(),使用debug sampler查看regex提取器正在提取什么以及设置了什么变量。