JMeter使用记录

文章目录

  • 概述
  • 从0创建一个测试场景
    • 线程组
    • 配置元件
      • CSV Data Set Config
      • HTTP信息头管理器
      • HTTP Cookie管理器
      • HTTP请求默认值
    • 逻辑控制器
      • 简单控制器
      • IF控制器
      • 循环控制器
      • while控制器
    • 取样器
      • HTTP取样
    • 前置/后置处理器
      • BeanShell处理器
      • JSR223处理器
    • 监听器
      • 查看结果树
      • 聚合报告
      • 汇总报告

概述

有的时候, 我们通常是想知道自己开发的系统能够支持多少访问量, 请求的响应时间以及系统资源占用情况等; 这时候通常需要对系统进行压力测试, 而JMeter就是一个比较全能且免费开源的压力测试工具; 通过合理的设置测试场景, 可以很好的获取到当前系统的压力测试指标;

常见的压力测试指标有:

  1. 响应时间(Response Time):指从发送请求到接收到响应的总时间。响应时间是评估系统性能的重要指标之一,通常以平均响应时间、最大响应时间和百分位数(例如 90th 百分位)来衡量。
  2. 吞吐量(Throughput):指单位时间内处理的请求数量。吞吐量是评估系统处理能力的指标,通常以每秒完成的请求数(Requests per Second,RPS)或每分钟完成的请求数(Requests per Minute,RPM)来表示。
  3. 并发用户数(Concurrent Users):指同时发送请求到系统的用户数量。并发用户数是评估系统负载能力的重要指标之一,它可以帮助确定系统在同时处理多少个请求时仍能保持良好的性能。
  4. 错误率(Error Rate):指在测试期间发生的错误请求的比率。错误率是评估系统稳定性和可靠性的指标之一,通常以百分比表示。
  5. 资源利用率(Resource Utilization):指系统在压力测试期间所使用的硬件资源(如 CPU、内存、磁盘、网络带宽)的利用率。资源利用率是评估系统负载情况和性能瓶颈的重要指标之一。
  6. 系统响应成功率(Success Rate):指成功处理请求的比率。成功率是评估系统性能和可靠性的关键指标之一,通常以百分比表示。
  7. 性能指标阈值(Performance Thresholds):指预先定义的性能指标的阈值。通过将实际性能与预期性能进行比较,可以确定系统是否满足了性能要求。

从0创建一个测试场景

一个完整的测试场景的构建, 基本包括右图的这些元素:

  1. 最基本的测试单元是线程组, 线程组作为其他元件的承载对象;
  2. 可以配置公共的http管理头, 域名, cookie等; 配置后后续请求不填写这些项则表示使用公共配置;
  3. 逻辑控制器: 逻辑控制器可以配置操作之间的逻辑关系;
  4. 取样器: 真实业务请求, 包括http请求等;
  5. 前置/后置处理器: 取样器执行前后的额外操作, 可用于数据组装, 断言等, 可调用外置脚本;
  6. 断言: 断言结果;
  7. 监听器: 监听器用于汇总测试结果, 显示测试指标等;
  8. 用户变量: 自定义变量

界面示意

界面示意

线程组

线程组配置界面如右图, 配置说明如下:

  1. 在取样器错误后要执行的动作:
    1. 继续: 表示继续执行后去操作;
    2. 启动下一进程循环: 退出当前循环, 开始执行下一次;
    3. 停止线程: 停止当前线程, 不影响并行的其他线程;
    4. 停止测试: 整成流程退出当前的测试, 包括其他正常的并行线程;
    5. 立即停止测试: 直接退出, 强制中断所有线程;
  2. 线程数: 指并行的线程数

线程组

线程组

  1. Ramp-Up时间: 爬坡时间(单位:秒), 比如如果线程数设置为100, 爬坡时间设置为10秒, 那么这100个线程会在10秒内启动起来
  2. 循环次数: 表示当前线程组要循环执行多少次;
  3. Same user on each iteration: 是否在每次迭代中保持相同的用户。当这个选项被勾选时,JMeter 会在每次迭代中重用相同的用户,这意味着每个线程(用户)的行为会在每次迭代中保持一致。
  4. 延迟创建线程直到需要: 是否延迟创建线程直到需要的时候。如果选中了这个选项,那么 JMeter 将不会在测试开始时立即创建所有的线程,而是在测试运行过程中根据需要动态地创建线程。
  5. 调度器: 用于设置调度规则, 通常使用于无限循环, 通过调度器来控制用例时长;
    1. 持续时间(秒): 线程组执行总时长
    2. 启动延迟(秒): 延迟时间; 如果您在线程组级别设置了启动延迟,那么整个线程组中的所有线程都会在指定的延迟时间后开始执行。这意味着所有线程将在相同的时间点后启动,延迟时间是相对于测试计划开始执行的时间。

配置元件

jmeter的配置元件可以为线程组配置一些额外的附加属性, 当然也可以放在其他控制器, 采样器里面; 它会影响到在流程上位于其后的组件部分;
在这里插入图片描述

CSV Data Set Config

配置csv外部数据的解析格式, 变量名等信息; 和外部数据做映射

HTTP信息头管理器

管理http的header信息, 可以附加自定义的消息头

HTTP Cookie管理器

管理http的cookie信息, 一般保持默认配置即可, 可以保证当前线程中的cookie共享;

每次反复清除Cookie: 勾选后, 每次循环都会清理cookie恢复初始状态;

同时可以自定义一些Cookie信息到请求之中;

HTTP请求默认值

可以定义请求的基础信息, 让后续请求共用, 包括: 协议, 服务器或IP, 端口号, 请求路径 , 一般情况下会共用协议, 域名和端口号

逻辑控制器

控制器的目的是在复杂场景下, 控制各流程的执行顺序; 如果在流程控制器之外放置取样器, 各取样器会并发执行, 无法控制请求顺序;

简单控制器

正如其名, 无任何其他功能, 仅控制执行顺序;

IF控制器

条件控制器, 类似代码中的if分支

循环控制器

循环控制器, 类似代码中的for

while控制器

循环控制器, 类似代码中的while

while控制器有一个Condition参数, 用于控制循环什么时候结束, 目前实践中是通过读取变量判断值来实现的, 比如:
${__javaScript("${resp_status}" === "pending")}
该表达式表示变量 resp_status 等于 pending 则条件成立;

取样器

取样器是真实的业务调用, 目前主要接触的HTTP取样;

HTTP取样

HTTP请求里面基本没有什么特殊的配置项, 和正常的http请求术语基本都保持一致; 只要能用postman这样的工具, 基本使用都没有什么问题;

前置/后置处理器

相当于就是在执行前后增加了拦截器, 可以存在多个, 拦截顺序同排版顺序;

BeanShell处理器

BeanShell 处理器是 JMeter 中的一种元件,用于执行 BeanShell 脚本。BeanShell 是一种基于 Java 的脚本语言,它支持 Java 的语法和大部分特性,并且具有更灵活的语法和动态性。以下是关于 BeanShell 处理器的一些重要信息:

  1. 执行脚本: BeanShell 处理器允许您在测试计划中执行 BeanShell 脚本。您可以编写 BeanShell 脚本来实现自定义的逻辑、处理数据、模拟用户行为等。
  2. 灵活性: BeanShell 脚本语言允许您在脚本中使用 Java 的语法和大部分特性,同时还支持一些额外的特性,例如动态类型、脚本化操作等。这使得 BeanShell 处理器成为 JMeter 中非常灵活和强大的元件之一。
  3. 嵌入性: BeanShell 处理器可以放置在测试计划的任何位置,并在测试执行期间根据配置执行相应的 BeanShell 脚本。您可以将其放置在线程组、事务控制器、采样器等元件中,根据需要执行相应的逻辑。
  4. 性能影响: 与 JSR223 处理器相比,BeanShell 处理器执行 BeanShell 脚本的性能可能稍逊一筹。因此,在性能测试中使用 BeanShell 处理器时,需要注意脚本的执行效率,并进行必要的优化以减少性能影响。

总之,BeanShell 处理器为 JMeter 用户提供了执行自定义 BeanShell 脚本的功能,具有灵活性和强大的定制化能力。在使用时需要注意性能影响,并根据具体需求编写高效的脚本代码。

JSR223处理器

JSR223 处理器是 JMeter 中的一种元件,用于执行脚本代码。它允许您在测试计划中使用多种脚本语言(如 Groovy、JavaScript、Python、Ruby 等)来编写自定义的逻辑、处理数据或执行其他操作。下面是关于 JSR223 处理器的一些重要信息:

  1. 支持的脚本语言: JSR223 处理器支持多种脚本语言,包括 Groovy、JavaScript、Python、Ruby 等。您可以在处理器的配置中选择所需的脚本语言,并在脚本中编写对应语言的代码。
  2. 执行时机: JSR223 处理器可以放置在测试计划的任何位置,并在测试执行期间根据配置执行相应的脚本代码。您可以将其放置在线程组、事务控制器、采样器等元件中,根据需要执行相应的逻辑。
  3. 灵活性: 使用 JSR223 处理器,您可以编写高度定制化的逻辑,包括处理响应数据、生成动态参数、执行自定义计算等。这使得 JSR223 处理器成为 JMeter 中非常强大和灵活的元件之一。
  4. 性能影响: 由于 JSR223 处理器会动态地执行脚本代码,因此在性能测试中过度使用 JSR223 处理器可能会对测试性能产生负面影响。因此,建议在使用 JSR223 处理器时谨慎考虑其性能影响,并优化脚本以提高执行效率。

总之,JSR223 处理器为 JMeter 用户提供了执行自定义脚本代码的灵活性和功能性,但在使用时需要注意性能影响,并根据具体需求选择合适的脚本语言和编写高效的脚本代码。

监听器

查看结果树

在这里插入图片描述

聚合报告

在这里插入图片描述

汇总报告

在这里插入图片描述

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

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

相关文章

淘宝客必看:微信公众号如何快速接入抖音本地团购并提高CPS收益

抖音已经成为社交媒体新的流量高地,抖音团购完全复刻了美团的模式,外卖、到店、吃喝玩乐全覆盖。很多淘宝客一直在寻找通过微信公众号实现营销变现的有效途径?是否对于如何将抖音团购转变为自己的佣金收入感到困惑?微信公众号接入…

前端根据后端返回的数组对象处理转为树状结构

在项目开发中往往需要用到树形结构,可是后端返回的数据不符合树形结构,这时就需要我们自行转换成树状结构 封装树形结构转换代码 const convertToTree (data:any) > {const map:any {};const roots:any [];data.forEach((item:any) > {map[it…

推荐一个Star74.5k的电商系统项目

最近不少兄弟正在面试,过来咨询 V 哥关于项目经验的问题,记得上周给大家分享了一篇《教你如何回答技术面试问题才完美》的文章,其中文章中最核心的问题,就是在简历中如何体现你的项目经历,我再强调一下,如何…

Linux 网络:调试、追踪、调优

文章目录 1. 前言2. 网络状态观察2.1 硬件:网络硬件 调试观察2.1.1 网络 PHY 芯片 调试观察2.1.1.1 观察方法2.1.1.2 源码实现2.1.1.2.1 用户空间部分2.1.1.2.2 内核空间部分 2.1.2 网卡调试观察2.1.2.1 网卡性能评估2.1.2.1.1 网卡性能评估方法2.1.2.1.2 代码实现 …

【Spring高级】Aware与InitializingBean接口

目录 Aware接口概述为什么需要Aware接口 InitializingBean接口Autoware失效分析 Aware接口 概述 在Spring框架中,Aware 接口是一种常用的设计模式,用于允许bean在初始化时感知(或获取)Spring容器中的某些资源或环境信息。这些接…

Sora平替?5款AI视频生成工具,真的好用吗?

最近Sora真的太火了,这不,人家接口都还没公开,各种Sora培训课就已经上线了,就离谱! 不过呀,话说回来,AI视频生成的确是未来的趋势,如果AI视频真的能达到Sora演示的效果,…

Spring体系架构

目录 核心容器(Core Container) 数据访问/集成(Data Access/Integration) Web开发(Web)

web项目抢购模块测试

web项目抢购模块测试 抢购模块(先测后台,再测前台)流程抢购用例编写测试点--后台抢购用例编写测试点--前台用例设计 面试题1: 当你发现研发实现的结果与需求不一致时怎么办? 需求评审的时候:需要确认所有输入类型的校验是针对单独的输入框做的还是在最终提交时校验 抢购模块 需…

鸿蒙开发-UI-动画-弹簧曲线动画

鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 鸿蒙开发-UI-图形-组件内转场动画 文章目录 前言 一、基本概念 二、弹簧曲线动画实现 1.使…

WPF资源的继承

假设这里有一个全局的资源 <Style TargetType"TextBlock"><Setter Property"FontSize" Value"40"/> </Style> 这是时候有些控件可能需要一个样式在这个基础上加一点内容的 <Style x:Key"textBlockStyle" Targ…

移速u盘怎么恢复彻底删除的文件,移速u盘彻底删除的文件如何恢复

移速u盘怎么恢复彻底删除的文件&#xff1f;在日常使用中&#xff0c;我们经常会遇到需要删除U盘中的文件的情况。然而&#xff0c;有时候我们可能会不小心将重要的文件彻底删除&#xff0c;导致数据的丢失。对于移速U盘用户来说&#xff0c;如何恢复彻底删除的文件成为了一个备…

vacuum无法清除死行(dead rows)的原因

文章目录 1.需要执行vacuum的原因2.VACUUM存在的问题&#xff1a;表膨胀3.查找原因4.阻止vacuum清理死行的四个原因4.1 长事务:4.2 弃用的replication slot和VACUUM:4.3 孤立的prepared transactions&#xff1a;4.4 启用 hot_standby_feedback 的备用服务器(standby server) 1…

注意:腾讯云轻量应用服务器地域选择攻略,选错很麻烦!

腾讯云轻量应用服务器地域如何选择&#xff1f;地域就近选择&#xff0c;北方选北京地域、南方选广州地域&#xff0c;华东地区选上海地域。广州上海北京地域有什么区别&#xff1f;哪个好&#xff1f;区别就是城市地理位置不同&#xff0c;其他的差不多&#xff0c;不区分好坏…

AI壁纸号一周增加上千粉丝,轻松变现的成功案例分享

前言 随着AI绘画技术的发展&#xff0c;传统的互联网副业壁纸号在新的技术加持下迎来了第二春。本文将分享一位壁纸号创作者的成功案例&#xff0c;并为大家提供创作门槛和硬件要求等相关信息。 该项目的创作门槛极低&#xff0c;基本上可以由AI完成内容创作。不过&#xff0…

界面开发框架DevExpress XAF v24.1新版预告 - 跨平台应用UI(二)

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 本文中的内容概述了…

【算法积累】辗转相除法

【算法积累】辗转相除法&#xff0c;python实现两种 辗转相除法&#xff08;又称欧几里得算法&#xff09;减法&#xff08;不常用&#xff09;代码实现执行结果 辗转相除法代码实现执行结果 辗转相除法&#xff08;又称欧几里得算法&#xff09; 又称欧几里得算法&#xff0c…

使用helm部署clickhouse

&#xff08;作者&#xff1a;陈玓玏&#xff09; 前置条件 已安装 Kubernetes 集群&#xff1b; 已安装 Helm 包管理工具。 部署 1 添加 RadonDB ClickHouse 的 Helm 仓库 helm repo add ck https://radondb.github.io/radondb-clickhouse-kubernetes/ helm repo upd…

苹果Vision Pro+:医疗领域创新引领者

在数字化浪潮的推动下&#xff0c;苹果以其前沿的Vision Pro技术&#xff0c;正引领着医疗领域迈向全新的创新高峰。该公司深信&#xff0c;通过数字化技术与传统医疗领域的深度融合&#xff0c;可以创造出更多创新性和实用性的解决方案&#xff0c;为患者和医护人员带来前所未…

【算法设计】实验四回溯算法(附源代码)

这里写目录标题 一、上机目的二、上机内容与要求三、上机步骤四、上机结果1、将课本5.2节算法改为程序&#xff0c;并输入数据及进行测试&#xff1b;2、自学5.4节&#xff0c;并完成符号三角形问题。 一、上机目的 1、通过回溯法的示例程序理解回溯法的基本思想&#xff1b; …

信号处理-探索相邻数据点之间的变化和关联性的操作方法

当前值减去前一个值&#xff0c;乘上当前值与前一个值差值的绝对值 当前值减去后一个值&#xff0c;乘上当前值与后一个值差值的绝对值。 意义何在&#xff1f; 当前值减去前一个值&#xff1a;表示当前数据点与前一个数据点之间的变化量。当前值与前一个值差值的绝对值&…