Api JMeter:重置计数值

Api JMeter:重置计数值,api,jmeter,crud,Api,Jmeter,Crud,我正在对数据库的CRUD调用执行基本的API测试。在JMeter中,我的测试计划中有1个线程和3个线程组,我在每个线程中设置了循环和计数器。使用计数器的原因是,在将结果保存到文件时,我想用计数器值附加文件的前缀 问题是计数器永远不会重置。例如: Where Count = 1 for all groups, I would expect: Thread Group 1, filename_1.json Thread Group 2, filename_2.json Thread Group 3

我正在对数据库的CRUD调用执行基本的API测试。在JMeter中,我的测试计划中有1个线程和3个线程组,我在每个线程中设置了循环和计数器。使用计数器的原因是,在将结果保存到文件时,我想用计数器值附加文件的前缀

问题是计数器永远不会重置。例如:

Where Count = 1 for all groups, I would expect: 
Thread Group 1, filename_1.json
Thread Group 2, filename_2.json
Thread Group 3, filename_3.xml

Where Group 1 Count = 3, Group 2 Count = 2, Group 3 Count = 1, I would expect: 
Thread Group 1, filename_1.json, filename_2.json, filename_3.json
Thread Group 2, filename_4.json and filename_5.json
Thread Group 3, filename_6.xml
相反,当Count=1时,对于所有组,我得到的结果如下:

Thread Group 1, filename_11.json
Thread Group 2, filename_14.json
Thread Group 3, filename_18.xml
经过多次搜索和尝试多种建议,我仍然没有得到我所期望的。下面是如何配置测试计划的示例

任何建议都将不胜感激

螺纹组1 HTTP头管理器(应用程序/json) 回路控制器 计数器(开始=1,增量=1,最大值=100,数值格式=null,参考名称=LoopCounter1) HTTP请求(创建) RegEx(RefName=newRequest,Reg Ex=“id”:(.+?)\,“displayName”,模板=1$,匹配号=1,默认值=NONE) BeanShell断言(Name=newRequest,Param=${uuuu setProperty(newRequest,${newRequest},)}) 将响应保存到文件(文件前缀=requestResult_${LoopCounter},变量名=newRequestFile) 回路控制器 HTTP请求(读取) HTTP请求(更新) HTTP请求(删除) 螺纹组2 HTTP头管理器(应用程序/json) 回路控制器 计数器(起始值=1,增量=1,最大值=100,数值格式=null,参考名称=LoopCounter2) HTTP请求(创建) 正则表达式(RefName=newconstrucd,Reg Ex=“id”:(.+?)\,“terminationType”,模板=$1$,匹配号=1,默认值=无) BeanShell断言(Name=newconstrucd,Param=${uuu setProperty(newconstrucd,${newconstrucd},)}) 将响应保存到文件(文件前缀=contractRecords\u${LoopCounter2},变量名=newContractFile) 回路控制器 HTTP请求(读取) HTTP请求(更新) HTTP请求(删除) 螺纹组3 HTTP头管理器(应用程序/xml) 回路控制器 计数器(起始值=1,增量=1,最大值=100,数值格式=null,参考名称=LoopCounter3) HTTP请求(创建) RegEx(RefName=newPricingId,Reg Ex=“id”:(.+?)\,“terminationType”,模板=$1$,匹配号=1,默认值=无) BeanShell断言(Name=newPricingId,Param=${uuuu setProperty(newPricingId,${newPricingId},)}) 将响应保存到文件(文件前缀=pricingRecords_${LoopCounter3},变量名=newPricingFile) 回路控制器 HTTP请求(读取) HTTP请求(更新) HTTP请求(删除) 更新

我离期望的结果更近了。启用“每个线程组上的重置计数器”后,我希望线程组2的计数重置为0。但是,它从上一个线程继续。我需要重置每个线程组中的计数器。原因如下:

Thread Group 2 HTTP Header Manager (application/json) Loop Controller Counter (Start=1, Increment=1, Maximum=100, Num Format=null, Ref Name=LoopCounter2) HTTP POST Request (CREATE) ${__FileToString(${payloadArchive}/${__eval(contract_${LoopCounter})}.json,,)} 螺纹组2 HTTP头管理器(应用程序/json) 回路控制器 计数器(起始值=1,增量=1,最大值=100,数值格式=null,参考名称=LoopCounter2) HTTP POST请求(创建) ${{uuu FileToString(${payloadArchive}/${uu eval(contract{uu${LoopCounter})}.json,,)} 正如您所看到的,我正在通过线程组2的每个循环将不同的文件传递到HTTP请求的主体中。每个.json文件都包含基于数据库唯一约束的唯一元素。这些文件名为“contract\u 01.json”、“contract\u 02.json”、“contract\u 03.json”等。这就是我希望线程组2重新启动其计数器的原因。

已解决(?)

以下计数器配置似乎提供了所需的结果

Thread Group 1 HTTP Header Manager (application/json) Loop Controller Counter Start=null, Increment=null, Maximum=null, Num Format=null, Ref Name=LoopCounter1 HTTP POST Request (CREATE) Thread Group 2 HTTP Header Manager (application/json) Loop Controller Counter Start=1, Increment=null, Maximum=null, Num Format=null, Ref Name=LoopCounter2 HTTP POST Request (CREATE) ${__FileToString(${payloadArchive}/${__eval(contract_${LoopCounter})}.json,,)} 螺纹组1 HTTP头管理器(应用程序/json) 回路控制器 柜台 Start=null, 增量=空, 最大值=零, Num Format=null, Ref Name=1 HTTP POST请求(创建) 螺纹组2 HTTP头管理器(应用程序/json) 回路控制器 柜台 开始=1, 增量=空, 最大值=零, Num Format=null, Ref Name=LoopCounter2 HTTP POST请求(创建) ${{uuu FileToString(${payloadArchive}/${uu eval(contract{uu${LoopCounter})}.json,,)} 如您所见,对于线程组2的每个循环,我都将不同的文件传递到HTTP请求的主体中。(每个文件包含基于数据库唯一约束的唯一元素。)这些文件名为“contract_1.json”、“contract_2.json”等。因此,我希望线程组2重新启动其计数器

它现在正在工作,并在每次循环中正确地获取正确的文件内容。但是,我不确定为什么计数器1的起始值必须为null,计数器2的起始值必须为1


如果有人发现了这方面的缺陷,我希望知道为什么以及如何纠正它。我只使用JMeter一周,没有Java(或任何编程)背景。

您在描述中说“我有3个线程”,但您的代码表明您有3个线程组。那么,你的意思是在3个线程组中的每一个都有3个线程?或者每个线程组有多少个线程?也检查了“每个用户独立跟踪计数器”吗?对不起,我只有1个线程和3个线程组。(我在原始声明中更正了这一点)。启用“独立跟踪计数器…”后,我更接近预期结果。启用“每个线程组上的重置计数器”后,我希望线程组2的计数重置为0。但是,它从上一个线程继续。我需要将每个线程组的计数器重置为从0开始。 Thread Group 1 HTTP Header Manager (application/json) Loop Controller Counter Start=null, Increment=null, Maximum=null, Num Format=null, Ref Name=LoopCounter1 HTTP POST Request (CREATE) Thread Group 2 HTTP Header Manager (application/json) Loop Controller Counter Start=1, Increment=null, Maximum=null, Num Format=null, Ref Name=LoopCounter2 HTTP POST Request (CREATE) ${__FileToString(${payloadArchive}/${__eval(contract_${LoopCounter})}.json,,)}