文章目录
一,安装插件
在安装好JMeter的插件之后,我们可以创建8个不同类型的线程组
线程组元素。该元素用于定义进度表和负载级别。线程组元素能够处理简单的性能测试。但是,JMeter具有许多出色的线程组扩展,可以帮助我们处理更复杂的场景。
这样的扩展之一是“定制线程组”插件,它使我们能够创建更复杂的负载方案。该插件通过五种出色的线程组类型扩展了JMeter基本线程组功能:步进线程组,终极线程组,并发线程组,到达线程组和自由形式到达线程组。
二,使用简介
1)bzm - Arrivals Thread Group(到达线程组)
乔治Maksimenko介绍:
一个“到达”是线程迭代的一个开始(虚拟用户的一个迭代开始)。
在到达的线程组用于时间表“到达”。“到达”的调度是描述负载的另一种方法。由于“到达”是脚本迭代的开始,因此调度到达就是迭代开始的调度。该自由形式到达线程组类似于抵达线程组有一个主要的区别-调度更加灵活。
bzm - Arrivals Thread Group(到达线程组)非常适合进行更传统的负载测试。可能的情况可能是“当用户在一个小时的时间内每分钟购买10张票时,我们的系统是否运行良好?”。
bzm - Free-Form Arrivals Thread Group(自由格式到达线程组)适用于负载测试,但也适用于诸如Spike测试之类的压力测试方案。可能的情况可能是“在促销开始后的5分钟内,我们的系统能否处理30,000张门票销售?”。
- Target Rate:目标线程数
- Ramp Up Time:所需多少加载时间
- Ramp Up Steps Count:所需多少个加载梯次
- Hold Target Rate Time:持续运行时间
- Time Unit:可以选择用分钟还是秒来做单位
- Thread lterations Limit:线程迭代次数限制。如果我们只需要运行每个用户一次以模拟用户的实际行为,则可能会很有用。在我们的例子中,该字段为空,因此每个用户将运行不确定的迭代,直到调度结束。
- Log Thread Status into File:将线程状态记录到文件中
- Concurrency Limit:最大并发数限制。以避免出现内存不足的问题。在我们的例子中是1000,这是一个很大的数字。
举个栗子
创建一个脚本:
添加了三个监听器:
jp@gc - Active Threads Over Time 查看测试时间段内的活动线程数
jp@gc - Hits per Second 查看每秒点击数
汇总 查看样本数
因为时间因素,设置短一点:
执行结果:
2)bzm - Free-Form Arrivals Thread Group(自由格式到达线程组)
- Start Value:起始值
- End Value:结束值
- Duration:持续时间
- Time Unit:可以选择用分钟还是秒来做单位
- Thread lterations Limit:线程迭代次数限制
- Log Thread Status into File:将线程状态记录到文件中
- Concurrency Limit:最大并发数限制
3)jp@gc - Stepping Thread Group(步进线程组)
jp@gc - Stepping Thread Group (deprecated)----阶梯加压,3.1版本
- This Group will start 100 threads:这次的测试一共会生成100个线程
- First , wait for :从点击执行之后,第一个线程多久开始执行。设置为0秒,就是点击执行之后立即执行
- Then start :初次加载多少个线程,设置为0,表示最开始不加载线程
- Next add:之后每次加载多少个线程
- threads every:每一次加载之后的持续时间,图中30,就是每梯次加载之后,运行30秒
- using ramp-up:每一次梯次加载线程的时间,设置为0,就是每梯次立马加载
- Then hold load for :线程全部加载完成之后,再运行多久停止。图中60秒,表示100个线程全部启动完毕之后,再持续运行60秒,停止。
- Finally , stop / threads every :每多久释放多少线程。图中表示为,所有持续负载结束之后,每1秒释放5个线程
图中默认给的含义是:
- 本次一共会启动100个线程
- 点击立即执行,没有延迟,启始0个线程开始加载
- 每5秒加载10个线程,运行30秒,然后再5秒加载10个线程,运行30秒…
- 一直到总线程加载到100个,然后100个线程持续运行60秒
- 60秒运行结束,每1秒释放5个线程,直到全部线程释放完毕,本次测试结束
结合Active Threads Over Time使用
一般推荐添加Active Threads Over Time监听器,来动态查看线程数和时间的关系图
4)bzm - Concurrency Thread Group(并发线程组)
bzm - Concurrency Thread Group(并发线程组)是 Stepping 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:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);
上图中的设置为:
- 本次一共会启动100个线程数
- 1分钟从0线程数加载到100线程数
- 6个梯次加载,就是每6秒加载10个线程(这10个线程没有加载时间,就是下个梯次一时间一到就立马加载了10个)
- 100个线程加载完成之后,再持续加压1分钟
5)jp@gc - Ultimate Thread Group(最终线程组)
可以对负载中的线程组进行复杂的管理。通过在线程计划中具有无限数量的行来完成此操作,这可以为线程组的不同部分启用不同的配置。
根据需要添加任意数量的线程数,并为每行选择延迟,启动时间,保持时间和关闭时间。
- Start Threads Count:一共要启动的线程数。图中本次测试一共启动100个线程。
- Initial Delay, sec:最开始延迟时间,单位秒。设置为0,就是点击了立即执行。
- Startup Time, sec:启动设置的100个线程一共需要的时间,单位秒。图中设置10秒
- Hold Load For, sec:保持加压时间,单位秒。图中10秒。
- Shutdown Time:多久时间内全部释放关闭,单位秒。图中10秒。
图中执行结果:
一共是启动了100个线程,总运行时间为30秒
添加多个线程组形式:
新增第二个线程组,设置为共启动50个线程,0秒延迟启动,启动时间5秒,持续加压时间5秒,释放结束时间5秒
每个线程组是按照自己设置的规则运行的,每一时刻的结果是两个线程组的叠加展示: