性能测试学习之路(四)—Jmeter之线程组详解

前言

接下来的文章会从上到下依次讲解元件,每个元件都会用单独一篇文章来讲解。本文先从线程组来讲解。

一、线程组简介

线程组是任何一个测试计划的开始点。一般来说在一个测试计划中的所有元件都必须在某个线程组下,所有的任务都是基于线程组来进行的。
在这里插入图片描述
如图所示添加线程组,是线程(用户),简单的说就是一个线程组中有多个线程,每个线程都是一个虚拟用户,一个线程可以发起多个请求。

二、线程组分类

一、线程组(原生)

在这里插入图片描述
线程数:相当于模拟用户的数量,假如设置为10可以理解为10个虚拟用户
Ramp-Up时间(秒):达到指定线程数需要的时间,例如线程数为10,时间设定为10s,那么就是10s加载完成10个线程,每秒启动的线程数为10/10=1
循环次数:不勾选永远则按照所输入的值循环执行线程组下的请求;勾选永远则会一直执行,勾选永远后一般会勾选调度器来设置运行的持续时间。
启动延迟(秒):测试计划延迟启动时间。
在这里插入图片描述


咱们来看一个例子:设置线程数为5,启动时间为5s,循环次数为2执行任务完成后用表格查看结果。
在这里插入图片描述
从表格中查看结果可以得知一共5个线程(用户),5s时间内启动完成(每秒启动一个),每个线程循环了2次。这样大家更容易直观地理解了吧。
在这里插入图片描述

二、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:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件)
如上图例子我们可以理解为设置所有时间单位为秒,目标线程(用户)数为12,60s的时间来达到12个线程数,需要3次加速来达到12线程数,那么平均每次增加4个线程数,达到12个线程数后持续运行180s。这个我们可以用监听器中的jp@gc - Transactions per Second来很清楚的看这个运行方式。
在这里插入图片描述

三、Stepping Thread Group(逐步线程组)

这个用来模仿递增式并发(递增和递减都可以),并可设置递增次数、递增启动延迟、递增时长、到达目标递增数量保持时长。
在这里插入图片描述其中各字段含义如下:
·This group will start:线程组最大用户数
·First, wait for:初次加载用户前等待时间
·Then start:第一次加载用户数
·Next, add - threads every - using ramp-up:然后增加用户每隔几秒,在几秒内启动线程组
·Then hold load for:运行持续时间
·Finally, stop - threads every:停止线程数,间隔每几秒
如上图例子我们可以理解为,我们目标要达到100个线程(用户),10秒后开始加载线程,第一次加载10个线程,然后每隔10秒增加10个线程,达到100个线程后持续运行60秒,每隔1秒杀掉5个线程。同样的这个我们可以用监听器中的jp@gc - Transactions per Second来很清楚的看这个运行方式。
在这里插入图片描述

四、Ultimate Thread Group(最终线程组)

这个线程功能强大的同时也不易理解。它可以对负载中的线程组进行复杂的管理。是由多个线程组设置的结合。执行的时候,每个线程组是同时按照自己的规则开始执行的,每一时刻,得到的结果都是两个线程组的叠加。
在这里插入图片描述
其中各字段含义如下:
·Start Threads Count:启动多少线程
· Initial Delay, sec:延迟多少秒开始启动线程
· Startup Time, sec:启用{Start Threads Count} 个线程花费多少秒
· Hold Load For, sec:线程全部启动完成后再持续运行多少秒,在此期间,每个线程请求完一遍后会再次发起相同的请求,若有思考时间,则会间隔设定的思考时间后再发起
· Shutdown Time:在多少秒内将 {Start Threads Count} 个线程全部停掉
如上图例子,我们可以这样分析,第一行的意思就是0s延迟后,经过1s的启动时间来启动10个线程,达到10个线程运行40s后立马全部释放,第二行的意思是经过5s的延迟后,经过1s的启动时间来启动30个线程,达到30个线程运行25s后经过5s的时间来释放。这样当横坐标到达5s后第二行线程开始启动,6s时一共运行的是10+30=40个线程,但是经过25s后也就是第31s,第二行中的30个线程经过5s释放了,所以到了36s只有10个线程在运行,然后到了41s立即释放,这样大家是不是都理解了,不懂得可以在评论写下你的疑惑。

————————————————————————————————————————————————
以上是我们常用的线程组,大家可以边看边自行操作,多学多使用才更快的上手了解。

  • 33
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值