JMeter使用记录

文章目录

概述

有的时候, 我们通常是想知道自己开发的系统能够支持多少访问量, 请求的响应时间以及系统资源占用情况等; 这时候通常需要对系统进行压力测试, 而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 用户提供了执行自定义脚本代码的灵活性和功能性,但在使用时需要注意性能影响,并根据具体需求选择合适的脚本语言和编写高效的脚本代码。

监听器

查看结果树

聚合报告

汇总报告

相关推荐
字节程序员10 小时前
JMeter 二次开发之环境准备
jmeter
测试杂货铺10 小时前
Jmeter压测实战:Jmeter二次开发之自定义函数
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
字节程序员10 小时前
Jmeter对图片验证码的处理【超详细】
jmeter
测试老哥2 天前
Jmeter测试脚本编写技巧
自动化测试·软件测试·功能测试·测试工具·jmeter·职场和发展·性能测试
易思涯2 天前
【已解决】黑马点评项目jmeter高并发测试中用户数据的生成
jmeter·解决方法·黑马点评
霍格沃兹测试开发学社测试人社区2 天前
软件测试丨性能测试工具-JMeter
软件测试·测试开发·测试工具·jmeter·性能测试
字节程序员2 天前
Jmeter分布式压力测试
分布式·jmeter·压力测试
美团测试工程师2 天前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
love静思冥想3 天前
JMeter 使用详解
java·jmeter
互联网杂货铺4 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试