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 用户提供了执行自定义脚本代码的灵活性和功能性,但在使用时需要注意性能影响,并根据具体需求选择合适的脚本语言和编写高效的脚本代码。

监听器

查看结果树

在这里插入图片描述

聚合报告

在这里插入图片描述

汇总报告

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sqllab第二关通关笔记

知识点整理: 数值型注入判断手法 1/1 1/0 回显不同错误注入函数 extractvalue(xml_flag,xpath) xml_flag:文件表示符xpath:文件路径;不能识别‘~’ ‘#’ 等特殊字符;遇到就报错并打印xpath内容~(十六进制表示)&#…

Linux环境下,QtCreator运行不起来

文章目录 一、qtcreator运行不起来二、错误信息三、下载libxcb-cursor四、安装 一、qtcreator运行不起来 直接点击qtcreator运行不起来 然后再命令行界面下, 进入到qtcreator所在的目录: cd /opt/Qt/Tools/QtCreator/bin 运行程序:./qtcr…

模拟电子技术实验(二)

单选题 1. 本实验的实验目的中,输出电阻测量是第几个目的? A. 1个。 B. 2个。 C. 3个。 D. 4个。 答案:C 评语:10分 单选题 2.本实验电路有一个元件参数有问题,需要修改? A. …

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

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

OceanBase原理之内存管理

第1章 前言 1.1 多租户管理简介 OceanBase数据库中,应用了单集群多租户的设计,使得一个集群内能够创建多个彼此独立的租户。在OceanBase数据库,租户成为了资源分配的单位,同时还是数据库对象管理和资源管理的基础。 在某种程度…

k8s的pod和svc相互访问时网络链路解析

k8s的pod和svc相互访问时网络链路解析 1. k8s环境中pod相互访问1.1. k8s中pod相互访问的整体流程1.2. k8s的相同机器的不同pod相互访问1.3. k8s的不同机器的不同pod相互访问 3. k8s访问svc3.1 nat操作3.2 流量进入到后端pod 4. 疑问和思考4.1 访问pod相互访问为什么不用做nat?…

03.JavaScript中的数组

数组 知道什么是数组及其应用的场景,掌握数组声明及访问的语法。 数组是什么? 数组:(Array)是一种可以按顺序保存数据的数据类型 **使用场景:**如果有多个数据可以用数组保存起来,然后放到一个变量中,管理…

前端基础篇-深入了解用 HTML 与 CSS 实现正文排版、正文布局

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 HTML 与 CSS 概述 2.0 HTML - 正文排版 2.1 视频标签 2.2 音频标签 2.3 段落标签 2.4 文本加粗标签 2.5 换行标签 2.6 CSS 样式 2.7 实现正文排版 3.0 HTML - …

2024年A特种设备相关管理(锅炉压力容器压力管道)证考试题库及A特种设备相关管理(锅炉压力容器压力管道)试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年A特种设备相关管理(锅炉压力容器压力管道)证考试题库及A特种设备相关管理(锅炉压力容器压力管道)试题解析是安全生产模拟考试一点通结合(安监局&#…

Android中ANR机制

Android中的ANR分为两种,前台ANR和后台ANR。 前台ANR,是指ANR时对用户可感知,比如拥有当前前台可见的activity的进程,或者拥有前台通知的fg-service的进程,这些是用户可感知的场景。前台ANR,会出现一个系统…

linux命令深入研究——vim

vim可以对指定文件内容进行编辑,同时其操作还有一些快捷方式,常用的有如下部分

TypeScript编译选项

编译单个文件:终端 tsc 文件名 自动编译单个文件:终端 tsc 文件名 -w 编译整个项目:tsc 前提是得有ts的配置文件tsconfig.json 自动编译整个项目:tsc --w tsconfig.json默认文件内容: tsconfig.json是ts编译器的配…

<商务世界>《第10课 招投标的多种形式》

1 公开招标 1.1 什么是公开招标 《招投标法》第十条第二款规定:“公开招标是指招标人以招标公告的方式邀请不特定的法人或者其他组织投标。”也就是说,所有公开招标的项目都必须在公共平台发布招标信息,符合条件的供应商均可以参与投标。 公开招标的采购方式,因为投标人较…

面向对象【static关键字】

文章目录 Java中的static关键字1. 静态变量2. 静态方法的特点3. 静态块4. 静态导入5. 单例模式中的应用 Java中的static关键字 在Java中,static是一个关键字,用于定义类级别的成员,这些成员与类的实例无关。static成员属于类而不是类的实例&…

刷题日记——01字符串、非素数个数(厦门大学机试)

题目1——01字符串 分析 经过拆解找规律&#xff0c;发现是两个斐波那契 那么代码就好写了呀 #include <stdio.h>unsigned long long f(int n){if(n0||n1){return n;}return (f(n-1)f(n-2))%2333333; }int main(){int n;scanf("%d",&n);printf("%…

sqllab第六关通关笔记

知识点&#xff1a; 报错注入回顾原始语句测试截取函数 mid(字符串&#xff0c;起始位置&#xff0c;长度)substr(字符串&#xff0c;起始位置&#xff0c;长度)left(字符串&#xff0c;长度)right(字符串&#xff0c;长度)加入截取控制的错误注入payload payload:id1"%2…

深度学习(十一):YOLOv9之最新的目标检测器解读

YOLOv9 1.YOLOv9:物体检测技术的飞跃发展1.1 YOLOv9 简介1.2YOLOv9 的核心创新1.2.1信息瓶颈:神经网络在抽取相关性时的理论边界1.2.2可逆函数:保留完整的信息流1.2.3对轻型模型的影响&#xff1a;解决信息丢失1.2.4可编程梯度信息 (PGI)&#xff1a;解决信息瓶颈1.2.5通用高效…

掘根宝典之C++迭代器简介

在C中&#xff0c;容器是一种用于存储和管理数据的数据结构。C标准库提供了多种容器&#xff0c;每种容器都有其独特的特点和适用场景。 我们知道啊&#xff0c;我们可以通过下标运算符来对容器内的元素进行访问&#xff0c;但是只有少数几种容器才同时支持下标运算符&#xf…

Leetcode 3.12

leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…

2024 年 2 月 NFT 行业动态:加密货币飙升,NFT 市场调整

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;NFT 研究页面 - Footprint Analytics 2024 年 2 月&#xff0c;加密货币与 NFT 市场显现出了复杂性。该月&#xff0c;NFT 领域的交易量达到 12 亿美元&#xff0c;环比下降了 3.7%。值得关注的是&#xff0c;包…