azure - 在 Azure Devops 的 Docker 实例中运行 Jmeter 测试时,按顺序运行类似的采样器会阻止执行超出第一个
问题描述
我正在尝试运行一项测试,其中我发出 82 个单独的请求,除了一个标头值之外,所有请求都相同。该测试在本地运行时正常运行,但由于 Docker 或 Azure Devops,我遇到了这个错误。下面是原始测试报告文本,您可以在其中看到只有一个 MobileAsync/Confirm 请求被调用。使用处理器记录表明预处理器将为每个采样器(包括那些显然不执行的采样器)进行记录,但后处理器仅记录似乎正在执行的采样器。
...
1623266094052,65,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094119,63,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094184,64,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094250,64,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094316,64,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094382,64,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094448,66,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094516,64,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266094582,65,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266099667,66,manifest.json HTTP Request,200,OK,Thread Group 1-1,text,true
1623266104748,1,Assert all modelObjects have been found,200,OK,Thread Group 1-1,text,true
1623266104779,18,JSR223 Sampler,200,OK,Thread Group 1-1,text,true
1623266104797,83,MobileAsync/Confirm HTTP Request,200,OK,Thread Group 1-1,text,true
qa.azurewebsites.net/MobileAsync/Confirm,83,0,0
1623266104911,67,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
1623266104997,63,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
1623266105062,65,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
1623266105128,64,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
1623266105194,62,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
1623266105258,63,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
1623266105322,64,manifest.json HTTP Request,304,The condition specified using HTTP conditional header(s) is not met.,Thread Group 1-1,,true
...
我试过的
我尝试修改登录请求并将其放入简单控制器中。
当我使用 ForEach 控制器进行 14 次调用时,我“硬编码”了循环。
我在采样器中添加了一个计时器,认为 Docker/Azure Devops 中可能存在故障保护机制,以防止发送超出要求的相同请求。
我正在测试 Blazemeter 的并行控制器,试图让 JMeter 插件在 Docker 中工作。
我尝试将采样器从旧的 ForEach 控制器移到新的控制器中。
测试
这是测试的图像,如果有帮助的话。
解决方案
ForEach 控制器采用以下形式的JMeter 变量:
var_1=foo
var_2=bar
var_3=baz
etc.
它在以下情况下停止:
End index for loop
到达了- 没有更多的变量可以迭代
先到先得
所以我建议检查 JMeter 变量名称/值
将JSR223 采样器放在 ForEach 控制器之前的某个位置
将以下代码放入“脚本”区域:
vars.entrySet().each {var -> log.info(var.key + '=' + var.value) }
在上面的代码中
vars
代表JMeterVariables类实例并且log
是Log4jLogger,请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy以获取有关这些和其他可用于 JSR223 测试元素的 JMeter API 简写的更多信息运行您的测试检查jmeter.log 文件后- 它将包含所有可用的变量,您可能会在那里发现其他可疑条目,我的期望是您只有一个变量可以迭代
如果您无法自行解决问题 - 使用您的 ForEach 控制器配置和 jmeter.log 文件内容更新您的问题
推荐阅读
- mysql - 如何修复迁移 laravel 中的“错误:SQLSTATE [HY000]”
- applescript - 将两个(applescript)脚本合并为一个
- mysql - 比较两个数据库表
- swift - 使用协议的 Swift 通用解码器
- python - 如何使用 pip 或 python 3.7 中的任何其他工具在我的 Django 项目中安装 mysql
- javascript - vuejs 如何将 v-slot 引用移动到组件中?
- java - 使用递归在 char[] 中查找特定字符后跟另一个特定字符
- c - 切片字符串和字符缓冲区不相等
- python - 无法在 Selenium 自动化工具中获取 span 元素中的每个单词?
- javascript - 使用数组道具更新不正确的反应子组件