【测试沉思录】19. 如何设置 JMeter 线程组?

news2024/11/27 5:30:50

作者:宋赟 编辑:毕小烦

最近有不少测试同学问我 JMeter 线程组如何设置并发的问题,发现很多人对线程组里的参数不是很清楚,今天就科普一下 JMeter 线程组的信息,也简单介绍一下不同场景的并发策略。

1. 线程组是什么

一个线程相当于一个虚拟用户,线程组顾名思义是多个线程的一个集合,是执行特定测试用例的用户池,是任何一个测试计划的开始点,它能使本线程组内的所有元件按照设定的测试用例来执行,故要执行性能测试的元件都必须在某个线程组下,否则没法控制。

img

在线程组的 GUI 页面中,我们可以模拟用户线程数、启动所有线程所需时间、执行测试的次数,也可通过调度器来执行测试的循环时长、定时执行等。

1.1 添加线程组的步骤

测试计划 – 右键 --添 加 – 线程(用户)-- 线程组

img

1.2 线程组中的参数

img

  • 名称: 线程组名称,自定义,没什么要求,默认也可,若有多个线程组,建议能有辨识度,和业务有关联性
  • 注释: 对该线程组做解释,自定义内容,也可为空

1.3 取样器错误后要执行的动作

  • 继续:当请求出错后继续运行。我们常规压测中,一般都是有大量的线程并发,而个别请求出现响应异常也属正常现象,只要错误率不是特别高即可。另外可能由于性能问题导致响应异常能够记录下来,也可供我们对服务是否有性能问题或稳定性作为一项参考依据。
  • **启动下一进程循环:**当有请求出错后同一脚本中剩下的请求不再执行,而是重新开始执行。
  • **停止线程:**当有请求出错后则停止当前线程,不再执行。如果我们运行了 10 个线程,其中某个线程有请求出错后,则会停止这个线程,只有9个线程并发了。如果错的越多,线程停止的就会越多,执行时间长了,运行的线程因为较少,对服务器的负载压力下降,导致压测结果没有参考性了
  • **停止测试:**当有请求出错后则停止所有线程,但不管线程执行到哪个请求,都会执行完当前循环的线程组内所有请求后才停止。
  • **立即停止测试:**当有请求出错后,立即停止整个测试场景。

1.4 线程属性

  • **线程数:**模拟的用户数,一个线程是一个用户。
  • **Ramp-Up时间(秒):**启动所有线程所需时间,单位为秒,比如 100 个线程要在 1 秒钟内启动完,则每个线程启动间隔时间为10 ms。
  • **循环次数(永远):**请求重复执行的次数。勾选永远则不能填入次数且会一直执行;不勾选永远,在输入框中输入数字则表示请求重复执行对应的次数。
  • **延迟创建线程直到需要:**勾选则按照 Ramp-Up 时间启动线程并运行;不勾选则先启动所有线程,再按照 Ramp-Up 时间启动请求。
  • **调度器:**设置开始运行时间。
  • **持续时间(秒):**执行多长时间,单位是秒,必然执行 5 分钟则填 300。
  • **启动延迟(秒):**点执行按钮后不运行线程,等待延迟时间过后开始运行线程。

2. setUp 和 tearDown 线程组

当压测需要有前提条件或预设值时,会用到 setUp 线程组;当压测执行完成后要做一些清理或预后工作时,会用到 tearDown 线程组。

2.1 setUp 线程组

「setUp 线程组」用于执行预测试操作,它的配置项与普通的线程组完全一样,不同之处在于 setUp 线程是在执行常规线程组之前执行。通常用在运行测试任务前,做初始化工作。例如建立数据库连接初始化工作。

img

2.2 tearDown 线程组

「tearDown 线程组」用于执行测试后操作,它的配置项与普通的线程组完全一样,不同之处在于 tearDown 线程组是在完成常规线程组执行之后执行。

img

3. 线程组在测试场景中的应用

在 JMeter 中,压测场景设置是在线程组里完成的,在线程组里我们需要组合用户的各种操作,特别是在复杂场景下,还需要配合多个控制器来进行场景设置,今天这里先不讲复杂场景,先把我们常用的场景如何在 JMeter 中完成设置讲一下。

下面通过两个场景粗略讲解下不同场景下使用的不同压测策略。

3.1 场景一

压测目标:购物场景【登录-挑选商品-加入购物车-支付】,这个场景的性能目标是响应时间不超过 1s,各接口 TPS 需要达到 50 以上。

测试分析:针对这种类型的场景我们一般压测时建议选择按时间执行该性能场景,执行可参考以下进行,具体线程数、Ramp-Up 时间以及持续时间可根据实际情况调整。

线程数Ramp-Up时间循环次数调度器持续时间
11永远300s
501永远300s
1001永远300s
1永远300s

3.2 场景二

**压测目标:**每天平均有 20 个左右的用户会进行导出操作,导出次数最多 60 次,希望导出响应时间不超过 3 秒。

测试分析:针对这类次数型场景建议选择按循环次数执行该性能场景压测。

线程数Ramp-Up时间循环次数调度器持续时间
1160××
1016××
2013××
3012××

通过以上两个场景,我们大概可以看出,一般涉及到次数或对请求量要求较低的情况,可以使用循环次数,但绝大部分场景用按时间循环会比较多,这场景设置不是绝对的,需要根据业务场景及用户使用习惯、再配合脚本请求相关设置等众多因素综合考虑。

以上两个场景情况作为引导读者更好理解不同场景使用不同压测策略,不作为压测策略推荐,仅供参考。

总结

本文粗略的讲了下线程组的定义及相关参数说明,并对线程组在测试场景中如何应用作了案例讲解,希望对大家有所启发。

(完)

如果文章对你有帮助,记得留言、点赞、加关注哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制作一个简单HTML游戏网页(HTML+CSS)米哈游 1页 带轮播图

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游戏官网 | 游戏网站 | 电竞游戏 | 游戏介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 …

K3S +Helm+NFS最小化测试安装部署只需十分钟

作者:郝建伟 k3s 简介 官方文档:k3s 什么是k3s k3s 是一个轻量级的 Kubernetes 发行版 它针对边缘计算、物联网等场景进行了高度优化。 k3s 有以下增强功能:打包为单个二进制文件。 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。…

【附源码】计算机毕业设计JAVA专利查询与发布系统设计与实现

【附源码】计算机毕业设计JAVA专利查询与发布系统设计与实现 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&#xff1…

BI数据分析

一 前言 数据分析一般需要掌握Excel、SQL,再强大的需要掌握python等。目前市面上的数据BI工具,就是用来优化复杂的数据分析过程,解放相关人员的生产力的,不再为了一个需求而漫长等待和重复多次沟通,从而让人员可以更多…

Echarts柱状图label优化历程

问题1 由于项目数据记录多或者数据值大的时候,会出现label重叠的现象,如下图。 解决方案 针对上述问题,解决思路如下: 1、求Y轴的最大值(我们用Y轴的最大值,去计算每个柱子在整个图中的占比)…

分布式文件系统

0.0 分布式文件系统 一般做法: 传统的模式是我们通过tomcat或者nginx,存放静态资源文件。 存在的问题: 单个节点会出现存不下的情况,需要多个节点。 分布式文件系统 需要一个系统来管理多个计算机节点上的文件数据&#xff…

[附源码]计算机毕业设计JAVA小锅米线点餐管理系统

[附源码]计算机毕业设计JAVA小锅米线点餐管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

Python Faker库造伪数据

pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple 在生成数据时,先调用unique,上面例子中的代码则改成下面这样 from faker import Faker def faker_demo(n): f Faker(“zh-CN”) l [] for i in range(n): # 代码更改处,…

安全高效应对混合办公新趋势 腾讯四大协同办公产品亮相

11月30日下午,2022腾讯全球数字生态大会「安全高效协同办公」专场在线上召开。论坛针对混合办公变革下的安全风险进行解析,并给出便捷规范的评估工具协助各行业客户评估自身办公安全成熟度,详细解读了腾讯数据安全解决方案、腾讯零信任iOA、腾…

Docker快速入门【极速浏览版】

文章目录11.1 Docker为什么出现1.2 Docker理念1.3 容器和虚拟机比较⭐️1.4 容器为什么比虚拟机快?⭐️1.5 Docker的基本组成⭐️1.6 Docker一个基本流程⭐️1.7 Docker架构⭐️1.7.1 入门版1.7.2 架构板22.1 Centos Docker安装2.2 前提条件2.3 官网安装doc2.4 查看…

安科瑞集中监控,剩余电流监测,温度保护电气火灾监控探测器

安科瑞 王晶淼/司红霞 一、电气火灾和爆炸的原因 电气火灾和爆炸在火灾、爆炸事故中占有很大的比例。如线路、电动机、开关等电气设备都可能引起火灾。变压器等带油电气设备除了可能发生火灾,还有爆炸的危险。造成电气火灾与爆炸的原因很多。除设备缺陷、安装不当等设计和施工…

人工智能-机器学习-深度学习-概述

文章目录一:人工智能需要的基础和涉及内容二:数学基础(1)线性代数(2)概率论(3)数理统计(4)最优化方法(5)信息论三:机器学习…

【ESD专题】案例:都是集成TVS管,为什么第一眼就发现不能导入?

本案例是在TVS管导入替代料时看规格书阶段发现的。如下所示为我司常用的集成TVS管,管子是四通道单向低寄生电容的。 电路框图和Top面的PIN脚与标识如下: 要导入的替代料介绍如下:可以看出也是4路ESD保护结构,也是低电容的高速接口。 电路框图和PI…

VMware虚拟机ubuntu网络配置以及ifconfig命令

文章目录VMware虚拟机联网NAT模式配置NAT联网原理手动配置网络关于apt命令关于ifconfig命令简介命令格式命令参数使用实例显示网络设备信息(激活状态的)开启/禁用网络VMware虚拟机联网 VMware提供:桥接,Host Only和NAT三种连网方式。 本文介绍的是NAT模式的具体设置方法&…

知识产权对接服务小程序开发,实现利益高效化

知识产权是市场经济的产物,所以知识产权的所属价值最终也是由市场所决定。科技的不断进步,让国内知识产权的申请量与注册量都显著增加,国家及国内科技企业对于知识产权的重视程度也显著提升,知识产权服务行业也迎来了飞速发展。很…

JVM运行时数据 堆

JVM运行时数据 堆快速调试堆参数设置堆分类运行流程Minor GC、Major GC与Full GC分代思想内存分配策略TLAB堆空间参数设置快速调试 一个JVM实例只存在一个堆内存,对也是Java内存管理的核心区域Java 堆区在Jvm启动的时候创建,其空间大小也就确定了。是JV…

缓存同步之 RabbitMQ 和 Canal

缓存同步 大多数情况下,浏览器查询到的都是缓存数据,如果缓存数据与数据库数据存在较大差异,可能会产生比较严重的后果。所以我们必须保证数据库数据、缓存数据的一致性,这就是缓存与数据库的同步。 数据同步策略 设置有效期&a…

Postman接口Mock Server服务器设置

目录 一、适用场景 二、设置步骤 2.1.创建一个mock server 2.2.配置mock server 2.3.Mock Servers创建成功一个新的mock地址 2.4.环境变量Environments:生成一个mock server新的环境变量 2.5.项目集Collections:生成一个mock server新的项目集&am…

Vue3 - Pinia 状态管理,解构 store(Pinia storeToRefs API 详细使用教程)

目录前言ES 解构方式(错误的)storeToRefs(正确的)总结SEO前言 解构啥意思呢?大家应该对 ES 传统方式解构非常了解,相同的,解构 store 也是如此。 假设你在状态管理仓库中定义很多很多数据&#…

BGP课后

文章目录实验要求拓扑图连接表1 网络连接规划表表2 网络设备明细表表3 IP规划表各设备的IP地址配置OSPF协议配置及BGP协议配置在R1、R2和R3上配置ospf协议在R2、R3、R4和R5上配置BGP协议路由引入利用路由策略实现路由过滤某一学校拟对单位网络进行规划设计。请根据下列具体要求…