使用JMeter做性能测试模拟多少用户发请求本质上依靠的就是线程组元件,线程组会告诉JMeter你想要模拟的用户数量,用户发送请求的频率和发送的数量。
以中文为例,字段含义如下:
【名称】:线程组的名称。
【注释】:对于线程组的描述相关注释,不是必填项。
【在取样器错误后要执行的动作】:取样器发生错误要执行哪个动作,包含继续、启动下一进程循环、停止线程、停止测试、立即停止测试五个动作。这五个动作的含义如下:
继续:取样器发生错误,忽略错误继续执行,默认选项
启动下一进程循环:取样器发生错误,忽略错误并停止当前线程循环,执行下一个循环
停止线程:当前线程运行完毕后,停止所有线程
停止测试:停止测试计划,如果一个测试计划下有多个线程组,那么所有线程组都会停止
立即停止测试:整个测试计划会立即停止运行
【线程数】:设置线程数,可以在测试计划的用户自定义变量中设置变量,在这里引用测试计划的变量 ${users},可以理解为并发用户数、系统并发数
【ramp-up时间】: 设置启动所有线程需要的时间
【循环次数】:设置线程组中的每个线程循环次数
【永远】:勾选此项表示线程组中的线程永久执行下去
【same user on each iteration】:每次迭代使用相同的线程,通常有 Cookie 组件时才生效
【延迟创建线程直到需要】:如果勾选了此选项,那么只会在需要用到的时候创建线程
【调度器】:线程调度器包含持续时间、启动延迟两个选项,选中调度器后,需要输入启动和结束时间。
【持续时间】:设置线程组运行多长时间,单位秒
【启动延迟】:设置线程启动延迟时间,单位秒
添加一个线程组(用户) 选择测试计划,右键点击后在显示的菜单中选择"添加"--> "线程组"。
修改默认的属性
从测试计划树型结构中选择线程组,在JMeter窗口右边显示线程组配置面板。
Ramp-Up Period:默认值为0,这个属性表示每个用户启动的迟延时间。
如果你设置其值为0,JMeter将会立即启动你所有的用户。
如果你输入Ramp-Up Period为10秒,JMeter将会在10秒内完成启动所有的用户。
上图中配置了5个用户并且Ramp-Up Period为10秒,那么启动两个线程之间的时间间隔就是2秒。执行测试查看结果树可以看到线程1在0秒开始启动,线程2在2S启动,线程3在第4秒启动,线程4在第6秒启动,线程5在第8秒启动。
另外,设置Ramp-Up Period可以模拟访问网页的并发用户数逐渐递增的场景,避免启动测试计划时负载过大,造成资源浪费。Ramp-up period值过大或过小对性能测试结果是有影响的。Ramp-up需要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。 一般设置ramp-up=线程数启动,并上下调整到所需的。即测试执行开始后,每一秒时间创建一个单独的线程,这样既不会造成虚假的系统负担,也不至于持续太长时间,较为合理。
Loop Count: 这个属性表示测试计划的重复次数。如果你设置为1,测试计划只运行一次。 要让JMeter不断的运行,就要选择"永远"这个复选框。