Jmeter各类线程组详解( 二 )


(一)原生线程组
1、thread group(线程组):
这个就是我们通常添加运行的线程 。通俗来讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户 。上文所介绍使用的例子就是此线程组 。
2、setup thread group(设置线程组):
一种特殊类型的ThreadGroup的,可用于执行预测试操作 。这些线程的行为完全像一个正常的线程组元件 。不同的是,这些类型的线程执行测试前进行定期线程组的执行;类似LoadRunner的init,测试开始时进行初始化的工作 。
不同的是执行顺序---它会在普通线程组执行之前被触发 。
应用场景举例:
A、测试数据库操作功能时,用于执行打开数据库连接的操作 。
B、测试用户购物功能时,用于执行用户的注册、登录等操作 。
3、teardown thread group(拆线组):
一种特殊类型的ThreadGroup的,可用于执行测试后动作 。这些线程的行为完全像一个正常的线程组元件 。不同的是,这些类型的线程执行测试结束后执行定期的线程组;类似LoadRunnner的end,测试结束时进行回收工作 。
不同的是执行顺序---它会在普通线程组执行之后被触发 。
应用场景举例:
A、测试数据库操作功能时,用于执行关闭数据库连接的操作 。
B、测试用户购物功能时,用于执行用户的退出等操作 。
(二)可拓展线程组
1、Concurrency Thread Group(递增式并发线程组)
这个可以模仿递增式并发(只能递增不能递减),并可设置递增次数、递增时长、到达目标递增数量保持时长等等:
参数解释:
· Target Concurrency:目标并发(总线程数)
· Ramp Up Time:加速时间(总加速时长)
· Ramp-Up Steps Count:加速步骤计数(总加速/递增次数)
· Hold Target Rate Time:保持目标速率时间(到达总线程数后持续时长)
· Time Unit:时间单位(分钟或者秒)
· Thread Iterations Limit:线程迭代次数限制(循环次数)
· Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);
现设计这样一个场景:

Jmeter各类线程组详解

文章插图
这意味着:
3分钟除以5步,每步0.6分钟;100个用户除以5步,每步20个用户;每0.6分钟将添加20个用户,直到达到100个用户,达到100个线程后,所有这些线程将继续运行,并一起打到服务器6分钟;
2、Stepping Thread Group(逐步线程组)
这个可以模仿递增式并发(不但递增还可以递减),并可设置递增次数、递增启动延迟、递增时长、到达目标递增数量保持时长等等:
Jmeter各类线程组详解

文章插图
参数解释:
1、线程组最大用户数:100个
2、初次加载用户前等待时间:10秒,此时没有用户进入
3、第一次加载用户数:10个用户开始
4和5:每隔10秒加10个用户
6、ramp-up在几秒内启动线程组
7、持续压测60秒,一分钟
8、和9:退用户,每10秒退出10个用户
10、上面各种设置的图形表示
3、bzm - Arrivals Thread Group(bzm-到达线程组)
跟Concurrency Thread Group线程组功能作用大同小异 。参数解释:
· Target Rate:目标线程数(总线程数)
【Jmeter各类线程组详解】· Ramp Up Time:所需多少加载时间(总加速时长)
· Ramp Up Steps Count:所需多少个加载梯次(总递增/加速次数)
· Hold Target Rate Time:持续运行时间(到达总线程数后持续时长)
· Time Unit:可以选择用分钟还是秒来做单位
· Thread lterations Limit:线程迭代次数限制 。如果我们只需要运行每个用户一次以模拟用户的实际行为,则可能会很有用 。在我们的例子中,该字段为空,因此每个用户将运行不确定的迭代,直到调度结束 。
· Log Thread Status into File:将线程状态记录到文件中
· Concurrency Limit:最大并发数限制 。以避免出现内存不足的问题 。在我们的例子中是1000,这是一个很大的数字 。
现设计这样一个场景:
Jmeter各类线程组详解

文章插图
所以以上设置就等于:3min除以5步,等于每步加速后持续0.6分钟,100个用户除以5步,等于每步加速20个用户,达到100个用户后持续跑6mn 。
4、Ultimate Thread Group(最终线程组)


推荐阅读