我有一个工作流程,涉及保存一些数据,然后几秒钟后更新它。我创建了一个包含如下参数的CSV文件:
ID,Success
1,true
2,false
3,true
4,false
5,true
依此类推。第一个HTTP请求是保存新ID:
POST http://server/save
{ id: 1 }
第二个HTTP请求使用以下状态更新ID:
POST http://server/update/
{ id: 1, success: true }
我已经创建了一个JMeter测试来测试这个工作流程。我使用以下步骤创建了线程组:
1. Do save request
2. Wait a random period between 5 and 30 seconds
3. Do update request
我已将线程组设置为一次使用2个线程作为初始测试。但是,我注意到实际发生的事情是这样的:
Thread 1
----------------------------------------------------
| 1. Do save request |
| 2. Wait a random period between 5 and 30 seconds |
| 3. Do an update request |
|--------------------------------------------------|
Thread 2
----------------------------------------------------
| 1. Do save request |
| 2. Wait a random period between 5 and 30 seconds |
| 3. Do an update request |
|--------------------------------------------------|
问题是,我真正想做的是确保始终有2个同时 HTTP请求到服务器。在这种情况下,它产生2个线程并作为一个线程在ENTIRE工作流中运行,这意味着我不能保证服务器上的某个负载。我想要它做的是:
Thread 1
-------------------------------------------------------
| |
| HTTP request |
| ********************************************** |
| * 1. Do save request * |
| ********************************************** |
| |
| 2. Wait a random period between 5 and 30 seconds |
| |
| HTTP request |
| ********************************************** |
| * 3. Do update request * |
| ********************************************** |
| |
|-----------------------------------------------------|
有没有办法可以编写我的JMeter测试,以确保服务器上始终有2个同时的HTTP请求?此外,更新请求必须在保存请求之后发生,否则ID将不存在。
这是我的JMeter测试的图像:
while 控制器只处理CSV文件中的每一行。
答案 0 :(得分:1)
我很遗憾地说我不明白你的问题。 您想要达到什么目标,特别是在上一个工作流程描述中。
无论如何,如果你注意到你没有同时发出2个线程的请求,这些线程可以完全正常,因为你有很长的暂停时间而且只有2个线程。
尝试使用100个线程,您将看到同时发出请求。
关于测试计划的一些注意事项:
您不需要while控制器迭代CSV,只需将线程组中的迭代设置为无限
在加载测试时删除视图树结果和响应时间图