什么是逻辑控制器?
逻辑控制器允许定义线程中处理求的顺序。例如,可以使用随机控制器将HTTP求随机发送到服务器
逻辑控制器确定执行用户求的顺序。
一些常用的逻辑控制器如下:
录音控制器:
JMeter可以记录测试步骤;记录控制器是存储这些记录步骤的占位符。
简单控制器:
简单控制器只是用户求的容器。
环路控制器:
循环控制器使用户求运行指定次数或永远运行,如图所示:
随机控制器:
随机控制器使所有用户求在每个循环周期内以随机顺序运行。
例如,有3个用户对网站http://www.google.com的求,顺序如下:
- HTTP求
- FTP求
- JDBC求
这3个求应该运行5次。总共有15个用户求将由JMeter发送到Google服务器。
按顺序发送求的顺序如下:
HTTP求->FTP求->JDBC求
对于每个循环。
在随机顺序中,求被随机发送,
FTP求->HTTP求->JDBC求
或
JDBC求->FTP求->HTTP求
对于每个循环。
模块控制器:
模块控制器的目标是向JMeter添加模块性。
总体思路是Web应用程序由小的功能单元组成(即此功能可以作为“模块”存储在Simple Controller中。模块控制器将选择需要运行的模块。
考虑以下场景-
想要模拟:
- 50 用户注销,
- 100 用户登录
- 30 用户搜索www.google.com
可以使用JMeter创建3个模块。每个模块都模拟每个用户活动:登录、注销和搜索。
模块控制器选择需要运行的模块。
其他重要控制器:
- 交织控制器:拾取并使一个用户求在线程的每个循环中运行。
- 运行时控制器:控制允许其子级运行多长时间。
例如,如果指定Runtime Controller 10秒,JMeter将运行测试10秒。
-
事务控制器:测量完成测试执行总时间
-
包括控制器:设计为使用外部测试计划。有关详细信息,参阅JMeter性能测试。
回路控制器示例
本节向展示将循环控制器集添加到当前性能测试计划的分步说明。
除了为线程组指定的循环值之外,循环控制器还会使采样器运行一定的次数。例如,如果
- 向循环计数为50的循环控制器添加一个HTTP求
- 将线程组循环计数配置为2
- 然后,JMeter将总共发送50*2=100个HTTP求。
以下是此示例的路线图:
步骤1) 配置线程组
我们重复使用教程JMeter性能测试中的步骤1、2。
-
添加线程组
右键单击“测试计划”并添加一个新的线程组:“添加”->“线程(用户)”->“线程组”
但在线程组控制面板中,按如下方式输入线程属性:
它将向Web服务器google.com发出一个用户求并运行2次。
-
添加JMeter元素
将HTTP求默认值添加到www.google.com。
-
添加回路控制器
右键单击线程组->逻辑控制器->循环控制器
步骤2) 配置环路控制器
将值50添加到循环计数字段,如下图所示。它将向web服务器google.com发出一个用户求,运行50次,除了上面为Thread Group指定的循环值=2之外,因此JMeter将总共发送2*50=100个HTTP求。
右键单击“循环控制器”,选择“添加”->“采样器”->“HTTP求”
步骤3) 在表中添加查看结果
我们重新使用计时器中的步骤2在表中添加查看结果
因此,测试计划如下图所示
步骤4) 运行测试
现在返回表中的查看结果,单击菜单栏上的开始按钮(Ctrl+R)以运行测试
如下图所示,jeter模拟一个用户求,发送百次到Web服务器http://www.google.com/。在100次发送用户求后停止测试。
故障排除:
- 如果在运行上述方案时遇到此问题.执行以下操作
- 检查是否通过代理连接到Internet。如果是,删除代理。
- 打开一个新的Jeter实例
- 在Jeter中打开ControllerTestPlan.jmx
- 单击Thread Group->View Result in Table(线程组->在表中查看结果
- 运行测试