如何使JMeter为工作流创建同时的HTTP请求?

时间:2012-11-07 06:05:33

标签: jmeter load-testing

我有一个工作流程,涉及保存一些数据,然后几秒钟后更新它。我创建了一个包含如下参数的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文件中的每一行。

1 个答案:

答案 0 :(得分:1)

我很遗憾地说我不明白你的问题。 您想要达到什么目标,特别是在上一个工作流程描述中。

无论如何,如果你注意到你没有同时发出2个线程的请求,这些线程可以完全正常,因为你有很长的暂停时间而且只有2个线程。

尝试使用100个线程,您将看到同时发出请求。

关于测试计划的一些注意事项:

  • 您不需要while控制器迭代CSV,只需将线程组中的迭代设置为无限

  • 在加载测试时删除视图树结果和响应时间图