1、线程组是什么
- 线程组是JMeter中任何一个测试计划的开始点
- 在一个测试计划中的所有元件都必须在某个线程组下
- 线程组决定JMeter执行测试计划的线程数
2、JMeter中的线程组
2.1 setUp线程组
在做接口测试前,一般会做一些准备工作,比如数据准备、登录等。这时候就可以用到setUp线程组,它类似于单元测试框架uniitest、pytest中的前置操作逻辑。
举例:使用setUp线程组执行登录操作
2.1.1 线程组界面及属性介绍
(1)线程数
- 用来模拟真实用户数,1线程数 = 1用户数
- 线程数建议不超过1000
(2)Ramp-Up时间(秒)
- 预期线程组的所有线程从启动-运行-释放的总时间
- ramp up=0时,表示瞬时加压,启动线程的时间无限趋近于0
- 注意: 在负载测试的时候,尽量把ramp up设置大一些,让性能曲线平缓,容易找到瓶颈点
(3)循环次数
- 每个线程循环执行的次数,默认一次
- 如果设置为永远,那么 jmeter 将以最大的可能去发送请求,以此测试出最大并发数
(4)调度器
- 作用: 控制每个线程组运行的持续时间以及它在多少秒后再启动
- 持续时间(秒):线程组运行的持续时间
- 启动延迟(秒):测试计划开始后,线程组的线程将在多少秒后再启动运行
- 注意: 当线程组运行完持续时间后,会逐步释放线程,不会一下子把所有线程释放掉,而释放线程也是需要时间的,所以测试计划总的时间(右上角的时间)会 > 持续时间+启动延迟
(5)调度器和循环次数的关系
- 循环次数有固定值且 ≠ -1,持续时间不会生效,以循环次数为准
- 循环次数设置为永远或 -1 时,持续时间才会生效
2.2 tearDown线程组
在做接口测试后,一般会做一些收尾工作,比如退出登录、关闭数据库连接、清理数据等。这时候就可以用到tearDown线程组,它类似于单元测试框架uniitest、pytest中的后置操作逻辑。
界面和属性与setUp线程组一致
2.3 线程组(普通线程组)
- 延迟创建直到需要: 默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。
界面和其它属性与setUp线程组一致
3、线程组执行顺序
setUp线程组 > 线程组 > tearDown线程组