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

这篇具有很好参考价值的文章主要介绍了【测试沉思录】19. 如何设置 JMeter 线程组?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:宋赟 编辑:毕小烦

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

1. 线程组是什么

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

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

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

1.1 添加线程组的步骤

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

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

1.2 线程组中的参数

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

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

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 线程是在执行常规线程组之前执行。通常用在运行测试任务前,做初始化工作。例如建立数据库连接初始化工作。

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

2.2 tearDown 线程组

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

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

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

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

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

3.1 场景一

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

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

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

3.2 场景二

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

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

线程数 Ramp-Up时间 循环次数 调度器 持续时间
1 1 60 × ×
10 1 6 × ×
20 1 3 × ×
30 1 2 × ×

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

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

总结

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

(完)

如果文章对你有帮助,记得留言、点赞、加关注哦!文章来源地址https://www.toymoban.com/news/detail-417987.html

到了这里,关于【测试沉思录】19. 如何设置 JMeter 线程组?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jmeter常用线程组设置策略

    ​ 在JMeter压力测试中,我们时常见到的几个场景有:单场景基准测试、单场景并发测试、单场景容量测试、混合场景容量测试、混合场景并发测试以及混合场景稳定性测试 在本篇文章中,我们会用到一些插件,在这边先给大家列出: ​ Custom Thread Groups插件 PS:在我们正式测

    2024年02月11日
    浏览(31)
  • Jmeter场景组合测试——多个线程组的设计方案

    我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作,今天我来重点讲解一下jmeter多个线程组在测试中的应用,这也是关于jmeter性能测试面试过程中的进阶问题,希望能够帮到大家来解决工作中不同的测试需求。 首先大家需要明确一件事儿,在jm

    2023年04月15日
    浏览(30)
  • 接口测试之jmeter不同线程组之间的参数共享

    思路:创建两个线程组,第一个线程组里面的 “登陆接口” 中登陆成功后获取到的token,要作为第二个线程组的http请求头中的参数信息 【ps:很多时候跨线程无法获取到参数就是没有勾选这个选项导致的】 注意:jmeter本身的内置函数中,“__setProperty()” 函数可以把某参数的

    2023年04月09日
    浏览(33)
  • Jmeter性能测试——1.设置代理

    Jmeter进行性能测试可以通过设置代理来录制脚本 1.添加http代理服务器 添加-非测试元件-http代理服务器 (鼠标右键点击左侧test plan 列表- Add-Non-Test Elements - HTTP(S) Test Script Recorder) 添加后 2.添加线程组 添加 - 线程(用户)- 线程组 (Add- Threads(users)- Threads Group) 3.设置要录

    2023年04月17日
    浏览(27)
  • JMeter测试工具设置中文

    在JMeter中,默认情况下是英文的,如果需要使用中文进行测试,则需要进行如下设置: 在JMeter运行时界面的“Options”菜单中,选择“Choose Language”,然后选择“中文(中国)”。此时JMeter界面的文字将会变为中文。 需要注意的是这个方法是 临时性 的,在下一次重新打开J

    2024年02月03日
    浏览(38)
  • Jmeter(三十):并发测试(设置集合点)

    集合点:让所有请求在不满足条件的时候处于等待状态。 如:我集合点设置为50,那么不满足50个请求的时候,这些请求都会集合在一起,处于等待状态,当达到50的时候,就一起执行。从而达到并发的效果。 那么Jmeter中可以通过同步定时器 Synchronizing Timer 来完成。 Number 

    2024年02月11日
    浏览(34)
  • 支持JDK19虚拟线程的web框架,之四:看源码,了解quarkus如何支持虚拟线程

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇是《支持JDK19虚拟线程的web框架》系列的第四篇,主要内容是阅读quarkus源码,开阔眼界,了解框架级别的软件是如何使用虚拟线程的,另外再感受一下整体架构设计的重要性,只有良好的设计才

    2024年02月08日
    浏览(37)
  • Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group

    测试计划描述了 Jmeter 在执行时,一系列的步骤 一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】测试计划添加or删除元件 通过右键点击树中的元件,选中要添加的元件 也可以通过合并(merge)或打开(open)从文件中

    2024年02月22日
    浏览(31)
  • Jmeter之https接口测试(导入证书、接口设置)

    1、jmeter中新建https请求,要注意,是https协议、443端口; 2、对于https类型的接口,使用Jmeter进行测试时,需进行证书导入 (1)证书下载:         使用Chrome打开需要被测地址,点击地址栏前面的小锁,如下图: (2)利用jdk中的keytool.exe工具,重新生成证书         在

    2024年04月25日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包