Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group

这篇具有很好参考价值的文章主要介绍了Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试计划

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

作用

  • 测试计划描述了 Jmeter 在执行时,一系列的步骤
  • 一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】测试计划添加or删除元件

测试计划添加or删除元件

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

  • 通过右键点击树中的元件,选中要添加的元件
  • 也可以通过合并(merge)或打开(open)从文件中加载和添加元件

配置树中的元件

  • 树中的每一个控件都能通过右边内容区显示
  • 树中的每一个控件都能在树中随意拖动

运行测试计划

  • 可以通过ctrl+r运行测试计划
  • 通过右侧的数字:活动线程数/线程总数,这仅适用于本地运行的测试;
  • 使用客户端-服务器模式时,它们不包括在远程系统上启动的任何线程【分布式压测时,master机不会显示所有远程salve机的线程总数】

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

特别注意

仅在调试测试计划时,才应该使用上面的 GUI 模式【界面模式】,如果实际运行负载测试的时候,应该使用CLI模式【命令行模式、无界面模式】

暂停运行测试计划

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

两种暂停方式

  • 停止线程(ctrl + .)【硬中断】
  • 关闭线程(ctrl + ,)【软中断】

stop threads

  • 许多采样器(Samplers)都是可中断的,这意味着可以提前终止活动采样
  • stop命令将检查所有线程是否已在默认超时(即5000 ms = 5秒)内停止
  • 如果有线程还没被停止,则会发送一条信息;此时可以再发送一次 stop 命令,但如果还是失败的话,就得退出 Jmeter 来清理

特别注意

上述说的默认超时可以通过Jmeter属性来改变 jmeterengine.threadstop.wait 【jmeter安装目录 / bin / jmeter.properties】

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

shutdown threads

  • 线程会在当前运行任务结束后停止,不会中断活动线程正在执行的任务
  • 会出现一个【正在停止测试】的窗口(如下图),直到所有线程都运行完成了才会关闭
  • 如果停止时间太久,也可以直接发stop命令

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

注意点

  • Linux CLI模式下,是没有快捷键来停止线程运行的,所以Jmeter 在 CLI模式下会监听特定端口上的命令(默认端口4445,可以通过 jmeterengine.nongui.port 修改)
  • 如果 4445 端口被占用了(比如,另一个Jmeter实例用了),Jmeter 会自动选择备用端口;
  • Jmeter 将尝试监听下一个更高的端口,直到到达Jmeter属性 jmeterengine.nongui.maxport 为止,该属性默认为4455

在CLI模式下,如何停止线程执行

在bin目录下,运行脚本

  1. stoptest.cmd / stoptest.sh 【硬中断】
  2. shutdown.cmd / shutdown.sh 【软中断】

注意,只有在同一个 host 下运行的脚本,Jmeter 才会接受

测试计划参数

用户定义的变量

  • 这里用户添加的变量,相当于全局变量,所有线程组都共用
  • 一般添加一些系统常用的配置
  • 一般不建议在测试计划上添加变量,因为不方便启用(disable)和禁用(enable)
  • 可以添加用户自定义变量组件来代替,如下图

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

测试计划中 独立运行每个线程组(例如在一个组运行结束后启动下一个)

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具 

默认:不勾选,默认各线程组并行、随机执行

作用:勾选后,用于控制测试计划中的多个线程组的执行顺序,保证顺序执行各线程组

下图是没有勾选时,多个线程组执行的顺序,可以看到并不完全是顺序执行的

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

下图是勾选后,多个线程组的执行顺序,可以看到当执行完第一个线程组所有取样器才会执行第二个线程组的,按顺序执行

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

特别注意:

  • 线程组中的取样器执行顺序:默认是从上到下执行
  • 交替控制器、随机控制器、随机顺序控制器、循环控制器 可以改变取样器的执行顺序

函数测试模式

勾选后,如果监听器(如:查看结果树)配置了保存到一个文件中(如下图),那么jmeter会将每次的请求结果保存到文件中

在负载测试中不建议勾选,平时调试脚本情况下可以勾选

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

添加目录或jar包到classpath

当BeanShell脚本需要调用外部的java文件或jar包时,可以把jar包路径添加到这里,然后在BeanShell中直接import进来,并调用jar包中的方法

Thread Group基础线程组介绍

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

Thread Group的简单理解

  • 线程组是一个测试计划的开始点
  • 在一个测试计划中的所有元件都必须在某个线程组下
  • 线程组决定 Jmeter 执行测试计划的线程数

Thread Group提供的主要作用

  • 设置线程数
  • 设置ramp-up period
  • 设置执行测试的次数【循环次数】

 

Thread Group的独立性

每个线程都会独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。

Thread Group线程属性讲解

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

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

默认:继续

建议:继续

假设一个HTTP Sampler报错了,后面还有其他请求,最好肯定是继续执行下去啦

线程属性值

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

设置的线程属性值是【预期压力值】

而聚合报告是【压力测试的实际结果】

线程数

  • Jmeter java进程下启动的线程,用来模拟真实用户数,1线程数 = 1用户数
  • windows下,2g的 java内存,1m 的栈空间,最大启动线程数=1000
  • Linux下,2g的 java内存,1m 的栈空间,最大启动线程数=2000
  • 在Jmeter中,先启动线程,再运行线程,后释放线程【启动线程并运行,释放线程】
  • 线程数建议不超过1000

Ramp-Up时间(秒)【确定一个线程的 启动时间】【精良不要设置为 0 】

  • 预期线程组的所有线程从启动-运行-释放的总时间
  • ramp up=0时,表示瞬时加压,启动线程的时间无限趋近于0
  • 特别注意在负载测试的时候,尽量把ramp up设置大一些,让性能曲线平缓,容易找到瓶颈点

循环次数

  • 每个线程循环执行的次数,默认一次【便于理解:线程的迭代次数、重复发起请求的次数】
  • 如果设置为永远,那么 jmeter 将以最大的可能去发送请求,以此测试出最大并发数

线程属性值的简单栗子

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

上图:10s 内启动并运行 10 个线程,一共启动 10 个线程,总共发送 20 个请求(10*2),每秒启动一个线程,然后运行两次

备注:如果 ramp-up 时间内,所有线程不能启动运行完的话,时间则会顺延下去

Ramp-up 设置注意事项

Ramp-up需要设置足够长的时间来避免在测试刚开始时工作量过大

  • 假如需要大量线程的话,不建议设置成0,0 属于瞬时加压【过小的 ramp-up period 】
  • 如果设置 0,Jmeter 将在测试开始时就启动全部线程并立即发送请求,这样很容易让服务器达到饱满状态,且瞬间会增加很大的负载量,容易让服务器超载,这样是不合理的;
  • 不合理的原因并不是因为平均压力值过高,而是因为所有线程都在初始状态时一起并发访问,从而引起不正常的初始访问峰值,可以通过 Jmeter 的聚合报告看到这种情况

Ramp-up还必须足够短,保证最后一个线程在第一个线程完成之前开始运行

  • 如果 Ramp-up 过大,则会降低访问峰值的负载,即没有达到预期的压力峰值,无法获取准确的服务器最大负载情况【过大的 ramp-up period 】
  • 具体的表现为:一些线程还没有启动,初期启动的部分线程已经结束了【导致实际并发量并会小于预期并发量】

如何确定一个合理的ramp-up period

  • 首先,让初始点击率接近平均点击率,前提是确定合理的访问量
  • 初始的 ramp-up period = 平均点击率= 总线程/点击率;
    • 假如线程数=100,点击率=10次/s,则ramp-up period = 100/10 = 10s

延迟创建线程直到需要

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具 

延迟创建线程,直到线程被需要、采样器开始执行时才会被创建,避免资源浪费

官方英文

When selected, JMeter will allocate threads according to the ramp up times. Otherwise all threads are allocated to the JVM process the moment the test is started, regardless of ramp up time.

译文

选中后,JMeter将根据 Ramp-up 时间来分配线程。 否则,无论 Ramp-up 时间如何设定,所有线程都将在测试开始时分配给JVM进程。

调度器Specify Thread Lifetime【scheduler】

调度器的作用:控制每个线程组运行的持续时间以及它在多少秒后再启动

Duration (seconds) :持续时间;线程组运行的持续时间

Startup Delay (seconds):启动延迟;测试计划开始后,线程组的线程将在多少秒后再启动运行

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

 

调度器和循环次数的关系

  • 循环次数有固定值且 ≠ -1,持续时间不会生效,以循环次数为准
  • 循环次数设置为永远或 -1 时,持续时间才会生效

调度器注意事项

当线程组运行完持续时间后,会逐步释放线程,不会一下子把所有线程释放掉,而释放线程也是需要时间的~

所以测试计划总的时间(右上角的时间)会 > 持续时间+启动延迟

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具

 

预习TPS

Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group,性能测试,测试工具 文章来源地址https://www.toymoban.com/news/detail-836507.html

  • 总的完成请求数 = 线程总数 * 循环次数
  • 平均TPS = 总请求数 / 线程运行总时间【上图,右角黄色三角形的时间】
  • 平均TPS(即聚合报告的TPS)是仅供参考的
  • 实际的TPS是由服务器决定的,因为它是衡量服务器处理能力的性能指标 

到了这里,关于Jmeter系列- test plan【测试计划】详细讲解 、 测试计划参数详解 、基础线程组Thread Group的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

    目录 一、前言 二、基本介绍 三、参数列表 四、XML报告输出格式 五、总结 使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行

    2024年02月07日
    浏览(70)
  • JMeter自动化测试工具超详细基础讲解(一)

    JMeter是Apache下的一个使用Java语言开发的自动化测试工具。主要用于服务器、网络以及对象模拟巨大负载,并且还可以使用自带有断言的脚本验证程序是否能够返回期望的结果,下面链接为JMeter的官网文档地址 优点 (1)JMeter是一个开源并且免费的自动化测试工具 (2)JMeter支

    2024年02月05日
    浏览(39)
  • test perf-01-性能测试之 JMeter

    Apache JMeter 可以用于测试静态和动态资源(Web动态应用程序)的性能。 它可以用于模拟服务器、服务器组、网络或对象上的负载,以测试其强度或分析不同负载类型下的总体性能。 JMeter Tutorial Apache JMeter可以用于测试静态和动态资源(Web动态应用程序)的性能。 它可以用于模拟服

    2024年02月03日
    浏览(42)
  • 【】jmeter并发测试计划

    参数必须设置头信息格式: 可以选择,仅查看错误日志

    2024年02月11日
    浏览(44)
  • Jmeter测试计划

    可以将测试计划可视化为用于运行测试的JMeter脚本。测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。 每个测试计划中至少应有一个线程组。 我们可以根据要求添加或删除元素。 前言中的快速开始就是一个测试计划

    2024年03月21日
    浏览(35)
  • Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)

    1.简介 上一篇中已经将其的理论知识介绍了一下,这一篇就带着大家一步一步的把上一篇介绍的理论知识实践一下,然后再说一下如何创建高级web测试计划。 2.网络计划实战 通过上一篇的学习,将其分类为: (1)不需要登录验证身份就可以操作的。 (2)需要登录验证身份

    2024年02月13日
    浏览(98)
  • SQL Server查询计划(Query Plan)——XML查询计划

    ​​​​​​6.4.3.  XML 查询计划 SQL Server中,除了通过GUI工具和相关命令获取图形及文本查询计划外,我们还可以通过相关命令获取XML格式的查询计划,这里惯称其为XML查询计划。 SQL Server 2005版本引入了XML查询计划的新特性,其充分吸收了图形及文本查询计划的优势所在,通

    2024年02月22日
    浏览(44)
  • Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)

    1.简介   在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,因此这篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家,希望对各位小伙伴和童鞋们的学习或者工作具有

    2024年02月13日
    浏览(75)
  • RK3399平台开发系列讲解(内核调试篇)spidev_test工具使用

    🚀 返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 在 Linux 系统上,“ spidev_test ” 是一个用于测试和配置 SPI ( Serial Peripheral Interface )设备的命令行工具。 SPI 是一种串行通信协议,通常用于连接微控制器、传感器和其他外部设备。“ spidev_test ”

    2024年02月09日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包