JMeter使用记录

news2024/11/25 0:50:18

文章目录

  • 概述
  • 从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.coloradmin.cn/o/1512230.html

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

相关文章

保护数字前沿:有效的威胁暴露管理

人工智能技术正在从根本上改变网络安全领域的方向。仅 2023 年,全球企业预计将在人工智能上花费 1027.8 亿美元,以阻止网络安全威胁。 人工智能 (AI)在增强网络安全措施方面发挥着关键作用,因为它能够快速分析大量数据并识别可能表明潜在威胁…

windows系统图标变白设置

我们在使用系统的时候,通常会在桌面创建图标,有时候桌面图标过多,整理图标放在新建文件夹的时候,图标变白,通常情况下都是缓存问题,这里也是删除缓存解决演示系统:windows11 1显示图标缓存目录 …

力扣--深度优先算法/回溯算法47.全排列 Ⅱ

思路分析: 使用DFS算法进行全排列,递归地尝试每个可能的排列方式。使用 path 向量保存当前正在生成的排列,当其大小达到输入数组的大小时,将其加入结果集。使用 numvisited 向量标记每个数字是否已经被访问过,以确保每…

五 超级数据查看器 讲解稿 列表功能2

五 超级数据查看器 讲解稿 列表功能2 点击此处 以新页面 打开B站 播放教学视频 点此下载 百度手机助手 下载地址4 讲解稿全文: 大家好,今天我们讲解一下,超级数据查看器列表界面,分为1-2两集。这是第二集 继续讲解弹出式菜单…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

摘要:开发远距离停车位检测系统对于提高停车效率具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个远距离停车位检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5,展示了不…

极简云商业版 开源源码

简化版的云商业源码已经以开源形式发布了,现在可以解绑卡密和查询卡密。总体而言,这个版本已经相当完善了。在对接示例网盘中有一个用户注册的例子,需要配置一个邮箱。您可以在网页上启用QQ邮箱的标准版SMTP,并生成一个授权码。 …

【多用途】Fruits-360:包含水果和蔬菜的图像数据集

一、介绍 该数据集包含水果和蔬菜的高质量图像数据集。 包括以下水果和蔬菜: Apples (different varieties: Crimson Snow, Golden, Golden-Red, Granny Smith, Pink Lady, Red, Red Delicious), Apricot, Avocado, Avocado ripe, Banana (Yellow, Red, Lady Fin…

关于c++的protected关键字

关于c的protected关键字 分类引言例子1)错误的demo2)改正的demo protected在c中的含义与作用 分类 c基础知识 引言 做了很业务,c基础知识却忘了很多,今天看了一个例子,唤醒了我关于c三大特性之一----封装&#xff0…

一文看明白Transformer微调过程中嵌入向量的变化

TL;DR 微调在图像分类中显著影响嵌入向量。微调前的嵌入向量提供通用性表征,而微调后的嵌入向量捕获任务特定的特征。这种区别可能导致在异常检测和其他任务中的不同结果。微调前和微调后的嵌入向量各有其独特优势,应结合使用以实现图像分类…

【MySQL 系列】MySQL 语句篇_DDL 语句

DDL( Data Definition Language,数据定义语言)用在定义或改变表的结构数据类型、表之间的链接和约束等初始化工作上。常用的语句关键字包括 CREATE、 DROP、 ALTER 等。 文章目录 1、MySQL 中的 DQL 语句2、MySQL 中库表的 DQL 语句详解2.1、…

[leetcode~dfs]1261. 在受污染的二叉树中查找元素

给出一个满足下述规则的二叉树: root.val 0 如果 treeNode.val x 且 treeNode.left ! null,那么 treeNode.left.val 2 * x 1 如果 treeNode.val x 且 treeNode.right ! null,那么 treeNode.right.val 2 * x 2 现在这个二叉树受到「污…

LeetCode刷题---即时食物配送 II

LeetCode题解 解题思路: 1.首先先求出每个用户首次订单表,将其命名为表t (select customer_id,min(order_date) as order_datefrom Deliverygroup by customer_id)as t2.与原表连接,求出在用户首次订单表中即时订单的数量的总和…

遥感云计算的一个拐点

GeoForge,一个值得关注的遥感大数据应用 简介 GeoForge是由Ageospatial公司开发的一个基于大语言模型(GeoLLMs)的地理空间分析平台。GeoForg的目的是使每个人都可以轻松进行地图绘制和地理空间分析,无论您是外行还是专家。 Geo for ChatGPT 作者团队已…

多模态大模型Claude 3正式接入集简云与语聚!对标GPT-4且支持中文

自OpenAI发布GPT-4以来,引发了业务模式与应用使用的巨大变革,掀起了各大企业对于多模态大模型的研究热潮。3月初,AnthropicClaude在官网正式发布Claude 3系列多模态大模型,据了解,该模型在多个维度上超越了GPT-4&#…

Midjourney指控Stability AI夜袭数据,网络风波一触即发

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

03_渲染进程调用node

我们先创建一个文件夹及文件,并且在 html 引入 JS 文件。 在 render.js 里面输入以下内容: let fs require(fs) // let是在当前代码块有效console.log(fs) // 将fs对象的内容打印到控制台供调试和查看 fs 模块:对文件系统进行操作&#xf…

Dubbo:常见的面试题和答案

请关注微信公众号:拾荒的小海螺 1、什么是 Dubbo?它的作用是什么? 答: Dubbo 是一款高性能的 Java RPC 框架,是阿里巴巴公司开源的产品,用于提供高性能的分布式服务框架和面向服务的架构。Dubbo 的主要作…

Pytorch基础(21)-- torch.repeat_interleave()方法

分享一下自己目前在维护的Github项目,由于本人博士阶段接触了一个全新的研究方向-----使用机器学习、强化学习、深度学习等方法解决组合优化问题,维护这个项目的目的: (1)记录自己阅读过的paper,同时分享一…

bash: mysqldump: command not found

问题:在linux上执行mysql备份的时候,出现此异常 mysqldump命令找不到 解决: 1、找到mysql目录(找到mysql可执行命令目录) which mysql 有图可知,mysql安装在: /usr1/local/java/mysql 2、my…

Onlyfans年龄验证/无法支付解决方案

很多小伙伴在使用的时候遇到年龄验证,或者需要绑定visa卡,这里需要注意的是提示绑定visa卡直接绑定就好了,记得开好你的环境,要不然也会出现身份验证,对于我们来说验证一般是不过的 1、准备好环境 2、准备好卡&#…