大佬教程收集整理的这篇文章主要介绍了『动善时』JMeter基础 — 53、JMeter集合点功能的使用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
“性能测试”一般思路是“多用户并发测试”,但真正的并发其实是不存在的,为了更真实、更接近的实现并发,在需要压力的地方设置集合点,等所有用户都到位的时候,然后一起访问,从而实现并发。
举个例子,要测试100个用户同时登录,每到输入用户名和密码登录的地方,所有的虚拟用户都相互等待,等100个用户都输入完毕,相当于集结在一起了 ,然后再一起访问。
(1)集合点含义
集合点可以简单得理解为一种控制虚拟用户行为的机制,该机制可以达到效果是:在一定时间范围内,将一定数量的虚拟用户,阻挡在一个操作行为点前的位置,进行互相等待。在条件(达到虚拟用户数量或超时)到达后,唤醒全部等待中的虚拟用户。从而达到,使一定数量的虚拟用户,可以同时进入下一个操作行为点的目的。
(2)集合点作用
让所有请求在不满足条件的时候处于等待状态,等待满足条件后,再同时一起发起请求。也就是模拟让所有用户,恰好在同一时刻执行任务,进行同步并发。常用在并发测试或压力测试中。
在实际工作中,往往初衷是为了实现最大意义上的并发,来考察系统应对此种极端情况的表现。
常见应用场景:秒杀。
提示:实现集合点的组件为同步定时器。
Synchronizing Timer
组件翻译过来叫同步定时器。
添加同步定时器组件方式:选中“取样器”右键 —> 添加 —> 定时器 —> Synchronizing Timer
。
界面内容如下图所示:
同步定时器界面详细说明:
number of Simulated Users to Group by
):一次集合多少用户后再执行请求。也就是设置模拟并发请求的线程数。
如果设置为0,默认等于线程组元件中设置的线程数。Timeout in milliseconds
):集合这些用户所花费的时间。
1)设置为0,无限等待,直到达到集合点设置的线程数。
2)设置指定时长,如果到达指定时长,集合点数量未到达,这时该集合中有多少用户,就释放多少用户数量。提示:
Timeout in milliseconds
为0,且线程数量无法达到number of Simultaneous Users to Group by
中设置的值,那么测试将无限等待,除非手动终止。(可能会导致程序挂起)number of Simultaneous Users to Group by
中设置的值,不大于它所在线程组设定的用户数。(集合数最好能被线程组中设置的线程数整除)Sampler
之前时,和Sampler
处于相同作用域的定时器都会被执行。如果希望定时器仅应用于其中一个Sampler
,则把该定时器作为子节点加入。例如:现在有一个需求,实现批量用户进行部门查询操作。
添加元件操作步骤:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。选中“线程组”右键 —> 添加 —> 取样器 —> http请求
。Synchronizing Timer
组件:选中“取样器”右键 —> 添加 —> 前置处理器 —>Synchronizing Timer
。选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
设置该线程组的线程数为50,来模拟50个用户进行数据的查询。
下图中的设置为,在1秒内启动50个线程。
一个查询请求的基本编辑,如下图所示:
我们设置同步定时器为:
界面内容如下:
下图为脚本的运行结果,这样看没有什么意义,一般要配合聚合报告组件查看。
提示:聚合报告内容下一篇文章详细说明。
集合点最关键的就是策略问题,涉及到两个方面:
正确使用集合点:
首先,测试场景的设计中加入集合点,实际上是在忽略ThinkTime
(思考时间)和KeyTime
的情况下,已经可以叫并发测试了,而且效果也完全达到了预期。
另外,建议将大事务拆解为更加短小精悍的几个小事务,并且通过分组运行调节这些事务之间的关系,比如一个组可以跑整个大事务,或者一些组按大小事务混合跑。在这种情况下精选几个关键性业务的事务组合,并放入集合点。然后一个一个的在压力背景环境下运行测试,重点关注它们的真正并发表现。
参考:
以上是大佬教程为你收集整理的『动善时』JMeter基础 — 53、JMeter集合点功能的使用全部内容,希望文章能够帮你解决『动善时』JMeter基础 — 53、JMeter集合点功能的使用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。