Jmeter中的监听器(二)

 5--JSR223 Listener 

用途

  • 自定义数据处理:使用脚本语言处理测试结果,实现高度定制化的数据处理和分析。
  • 实时监控:实时处理和显示测试结果。
  • 集成外部系统:将测试结果发送到外部系统进行进一步处理和分析。
  • 日志记录:记录详细的测试结果到日志文件。

支持的脚本语言

  • Groovy:推荐使用,性能优越且功能强大。
  • JavaScript:支持 ECMAScript 标准。
  • BeanShell:支持 Java 语法。
  • 其他语言:支持任何符合 JSR223 规范的脚本语言。

配置步骤

  1. 添加 JSR223 Listener

    • 右键点击线程组(Thread Group)。
    • 选择“添加” -> “监听器” -> “JSR223 Listener”。
  2. 配置 JSR223 Listener

    • 名称:给 JSR223 Listener 一个有意义的名称。
    • 脚本语言:选择使用的脚本语言(例如 Groovy)。
    • 脚本文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
    • 脚本:直接在脚本编辑框中编写脚本。
    • 参数:定义脚本中使用的参数(可选)。

示例配置

假设我们需要使用 Groovy 脚本记录每个请求的响应时间和状态码到日志文件中。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加 JSR223 Listener

    • 右键点击线程组 -> 添加 -> 监听器 -> JSR223 Listener。
    • 配置 JSR223 Listener:
      • 名称:JSR223 Listener
      • 脚本语言:Groovy
      • 脚本:在脚本编辑框中编写以下脚本:
        import java.text.SimpleDateFormat// 获取当前时间
        def now = new Date()
        def dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
        def currentTime = dateFormat.format(now)// 获取请求名称、响应时间、状态码
        def label = prev.getSampleLabel()
        def responseTime = prev.getTime()
        def statusCode = prev.getResponseCode()// 构建日志消息
        def logMessage = "${currentTime} - ${label} - Response Time: ${responseTime} ms - Status Code: ${statusCode}"// 写入日志文件
        def logFile = new File('C:\\logs\\test_results.log')
        logFile << logMessage + '\n'
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
  6. 查看日志

    • 打开日志文件 C:\\logs\\test_results.log,查看记录的测试结果。

优化建议

  1. 脚本语言选择

    • 推荐使用 Groovy,因为它性能优越且功能强大,是 JMeter 官方推荐的脚本语言。
  2. 脚本文件

    • 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 JSR223 Listener 中选择脚本文件路径。
  3. 参数

    • 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
  4. 性能影响

    • 注意复杂脚本可能会对测试性能产生影响,特别是大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
  5. 错误处理

    • 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
  6. 日志记录

    • 使用日志记录功能可以帮助调试和分析测试结果,确保日志文件路径有效且有足够的写权限。

752c58bd8faf467dbe555c884d3c7763.png


6--保存响应到文件

用途

  • 数据保存:将响应数据保存到文件中,便于后续分析和验证。
  • 调试:保存响应数据以便于调试和排查问题。
  • 数据归档:长期保存响应数据,用于归档和历史记录。

配置步骤

  1. 添加保存响应到文件监听器

    • 右键点击线程组(Thread Group)。
    • 选择“添加” -> “监听器” -> “保存响应到文件”(Save Responses to a file)。
  2. 配置保存响应到文件监听器

    • 名称:给保存响应到文件监听器一个有意义的名称。
    • 文件名:指定保存响应数据的文件路径和文件名。
    • 文件格式:选择保存文件的格式(例如txthtmlxml等)。
    • 追加文件:选择是否将新的响应数据追加到现有文件中。
    • 仅保存成功响应:选择是否仅保存成功的响应数据。
    • 仅保存失败响应:选择是否仅保存失败的响应数据。
    • 响应字段:选择保存响应的哪个部分(例如响应数据、响应头、响应码等)。

示例配置

假设我们需要测试一个Web应用,并将每个请求的响应数据保存到文件中。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加保存响应到文件监听器

    • 右键点击线程组 -> 添加 -> 监听器 -> 保存响应到文件。
    • 配置保存响应到文件监听器:
      • 名称:保存响应到文件
      • 文件名C:\\responses\\response_*.txt(*表示每个请求生成一个独立的文件)
      • 文件格式txt
      • 追加文件:选择“否”(每个请求生成一个独立的文件)
      • 仅保存成功响应:选择“是”(仅保存成功的响应数据)
      • 仅保存失败响应:选择“否”(不保存失败的响应数据)
      • 响应字段:选择“响应数据”(保存响应的主体内容)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
  6. 查看文件

    • 测试完成后,打开指定的文件夹 C:\\responses\\,查看保存的响应文件。

优化建议

  1. 文件名

    • 确保文件名路径有效且具有足够的写权限。使用通配符 * 可以为每个请求生成一个独立的文件。
  2. 文件格式

    • 根据响应数据的格式选择合适的文件格式,例如txthtmlxml等。
  3. 追加文件

    • 如果需要将所有响应数据保存到同一个文件中,选择“是”。如果需要为每个请求生成一个独立的文件,选择“否”。
  4. 仅保存成功响应

    • 如果只需要保存成功的响应数据,选择“是”。这可以减少文件的数量和大小。
  5. 仅保存失败响应

    • 如果只需要保存失败的响应数据,选择“是”。这可以帮助快速定位和分析问题。
  6. 响应字段

    • 根据需要选择保存响应的哪个部分,例如响应数据、响应头、响应码等。

f038f064dc5440a2a7df41a2db21293c.png


7--保存响应时间图

用途

  • 性能评估:直观地评估系统的性能,查看响应时间的变化趋势。
  • 问题定位:通过图表识别性能瓶颈和异常情况。
  • 报告生成:生成可视化的测试报告,便于分享和展示。

配置步骤

  1. 添加保存响应时间图监听器

    • 右键点击线程组(Thread Group)。
    • 选择“添加” -> “监听器” -> “保存响应时间图”(Response Times Over Time)。
  2. 配置保存响应时间图监听器

    • 名称:给保存响应时间图监听器一个有意义的名称。
    • 文件名:指定保存图表的文件路径和文件名(例如C:\\reports\\response_times.png)。
    • 文件格式:选择保存文件的格式(例如pngjpgsvg等)。
    • 时间间隔:设置生成图表的时间间隔(例如每分钟生成一张图表)。
    • 显示平均值:选择是否在图表中显示平均响应时间。
    • 显示最小值:选择是否在图表中显示最小响应时间。
    • 显示最大值:选择是否在图表中显示最大响应时间。
    • 显示中位数:选择是否在图表中显示中位数响应时间。
    • 显示标准差:选择是否在图表中显示标准差。
    • 显示错误率:选择是否在图表中显示错误率。

示例配置

假设我们需要测试一个Web应用,并生成响应时间的图表以评估性能。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加保存响应时间图监听器

    • 右键点击线程组 -> 添加 -> 监听器 -> 保存响应时间图。
    • 配置保存响应时间图监听器:
      • 名称:保存响应时间图
      • 文件名C:\\reports\\response_times.png
      • 文件格式png
      • 时间间隔:1分钟
      • 显示平均值:选择“是”
      • 显示最小值:选择“是”
      • 显示最大值:选择“是”
      • 显示中位数:选择“是”
      • 显示标准差:选择“是”
      • 显示错误率:选择“是”
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。
  6. 查看图表

    • 测试完成后,打开指定的文件 C:\\reports\\response_times.png,查看生成的响应时间图表。

优化建议

  1. 文件名

    • 确保文件名路径有效且具有足够的写权限。可以使用通配符或时间戳生成唯一的文件名,避免覆盖。
  2. 文件格式

    • 根据需要选择合适的文件格式,例如pngjpgsvg等。png格式通常适用于高质量的图表。
  3. 时间间隔

    • 根据测试需求设置合适的时间间隔,例如每分钟生成一张图表。时间间隔过短可能会生成大量图表文件,影响性能。
  4. 显示选项

    • 根据需要选择显示的统计信息,如平均值、最小值、最大值、中位数、标准差和错误率。选择合适的选项可以帮助更好地分析性能。
  5. 性能影响

    • 注意生成图表可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整时间间隔和显示选项来优化性能。
  6. 图表分析

    • 使用生成的图表进行性能分析,识别性能瓶颈和异常情况。可以结合其他监听器(如“聚合报告”、“汇总报告”等)一起使用,进行更全面的分析。

4c4de60d7e814333839d005f9b558f12.png


 

8--图形结果

功能特点

  • 响应时间:显示每次请求的响应时间,帮助用户了解请求处理的速度。
  • 吞吐量:显示单位时间内完成的请求数量,反映系统的处理能力。
  • 错误率:显示错误请求的比例,帮助发现潜在的问题。
  • 并发用户数:显示同时发送请求的用户数量,有助于评估系统在不同负载下的表现。

如何配置“图形结果”监听器

  1. 添加监听器

    • 在JMeter中,右键点击你的测试计划或者线程组。
    • 选择“添加” > “监听器” > “图形结果”。
  2. 配置基本设置

    • 标题:你可以为这个监听器设置一个标题,以便于识别。
    • 显示响应时间:可以选择是否显示响应时间的图形。
    • 显示吞吐量:可以选择是否显示吞吐量的图形。
    • 显示错误率:可以选择是否显示错误率的图形。
    • 显示并发用户数:可以选择是否显示并发用户的图形。
  3. 高级配置

    • 刷新周期:设置图形更新的频率,单位为毫秒。较低的数值可以使图形实时更新,但可能会增加CPU负担。
    • 显示数据点:可以选择是否在图形上显示具体的数据点。
    • 显示平均值:可以选择是否在图形上显示响应时间或吞吐量的平均值。
    • 显示中位数、最小值、最大值:这些选项允许你在图形上显示响应时间或吞吐量的中位数、最小值和最大值。
    • 显示标准差:显示响应时间或吞吐量的标准差,帮助评估数据分布的离散程度。
  4. 运行测试

    • 完成上述配置后,就可以运行你的测试了。运行测试时,“图形结果”监听器会自动收集数据并生成相应的图形。
  5. 分析结果

    • 测试结束后,通过观察图形结果,可以很容易地看出哪些时间段内系统的性能有所下降,哪些操作可能成为瓶颈。此外,错误率的图形可以帮助快速定位问题所在。

注意事项

  • 性能开销:“图形结果”监听器会占用一定的资源来收集和展示数据,因此在进行大规模压力测试时,应该谨慎使用,或者考虑在测试结束后再开启此功能,以减少对测试本身的影响。
  • 数据保存:默认情况下,“图形结果”监听器不会自动保存图形数据。如果需要保存,可以手动截图或者查找其他方式导出数据。

9131e159c09d486cacb5c812a656fc07.png

 

 

 

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

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

相关文章

计算机组成原理——进位计数制

1.认识不同进制 通常的我们日常生活中用到的都是十进制&#xff0c;比如买东西或者期末成绩等等&#xff0c;当然肯定不止这一种进制方法&#xff0c;相关的还有二进制、八进制、十六进制&#xff0c;还有古罗马数字&#xff0c;通常古罗马数字近似可以看作是五进制的数&#x…

function and task

任务和函数 在Verilog语言中提供了任务和函数&#xff0c;可以将较大的行为级设计划分为较小的代码段&#xff0c;允许设计者将需要在多个地方重复使用的相同代码提取出来&#xff0c;编写成任务和函数&#xff0c;这样可以使代码更加简洁和易懂。 1.1任务 任务的定义 任务定义…

【C++】用红黑树封装set和map

在C标准库中&#xff0c;set容器和map容器的底层都是红黑树&#xff0c;它们的各种接口都是基于红黑树来实现的&#xff0c;我们在这篇文章中已经模拟实现了红黑树 ->【C】红黑树&#xff0c;接下来我们在此红黑树的基础上来看看如何封装set和map。 一、共用一颗红黑树 我…

类与实例

1 问题如何理解类与实例&#xff1f; 2 方法 类与实例 类(class)的概述&#xff1a;用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类是一类事物&#xff0c;实例是具体的一个事物。 编程与生活是相通的&#xff0…

2024/11/4 计网强化

10: 17: 22: 09: 11: 12: 13&#xff1a; 14&#xff1a; 15&#xff1a; 18&#xff1a; 19&#xff1a; 20: 21: 16:

力扣104 : 二叉树最大深度

补&#xff1a;二叉树的最大深度 描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 何解&#xff1f; 树一般常用递归&#xff1a;递到叶子节点开始倒着处理

机器情绪及抑郁症算法

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月12日17点02分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17230869054974 计算机来理解你的情绪&a…

JAVA学习日记(十五) 数据结构

一、数据结构概述 数据结构是计算机底层存储、组织数据的方式。 数据结构是指数据相互之间以什么方式排列在一起的。 数据结构是为了更加方便的管理和使用数据&#xff0c;需要结合具体的业务场景来进行选择。 二、常见的数据结构 &#xff08;一&#xff09;栈 特点&…

i春秋-SQLi(无逗号sql注入,-- -注释)

练习平台地址 竞赛中心 题目描述 后台有获取flag的线索应该是让我们检查源码找到后台 题目内容 空白一片 F12检查源码 发现login.php 访问login.php?id1 F12没有提示尝试sql注入 常规sql注入 //联合注入得到表格列数 1 order by 3 # 1 union select 1,2,3 #&#xff08…

sql注入之二次注入(sqlilabs-less24)

二阶注入&#xff08;Second-Order Injection&#xff09;是一种特殊的 SQL 注入攻击&#xff0c;通常发生在用户输入的数据首先被存储在数据库中&#xff0c;然后在后续的操作中被使用时&#xff0c;触发了注入漏洞。与传统的 SQL 注入&#xff08;直接注入&#xff09;不同&a…

nginx 部署2个相同的vue

起因&#xff1a; 最近遇到一个问题&#xff0c;在前端用nginx 部署 vue&#xff0c; 发现如果前端有改动&#xff0c;如果不适用热更新&#xff0c;而是直接复制项目过去&#xff0c;会404 因此想到用nginx 负载两套相同vue项目&#xff0c;然后一个个复制vue项目就可以了。…

MySQL:CRUD

MySQL表的增删改查&#xff08;操作的是表中的记录&#xff09; CRUD(增删改查) C-Create新增R-Retrieve检查&#xff0c;查询U-Update更新D-Delete删除 新增&#xff08;Create&#xff09; 语法&#xff1a; 单行数据全列插入 insert into 表名[字段一&#xff0c;字段…

centos7 node升级到node18

使用jenkins发布vue3项目提示node18安装失败 错误日志&#xff1a; /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/Node18/bin/node: /lib64/libm.so.6: version GLIBC_2.27 not found (required by /var/lib/jenkins/tools/jenkins.plugins.node…

万字长文解读深度学习——ViT、ViLT、DiT

文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;ViT1. ViT的基本概念2. ViT的结构与工作流程1. 图像分块&#xff08;Image Patch Tokenization&#xff09;2. 位置编码&#xff08;Positional Encoding&#xff09;3. Transformer 编码器&#xff08;Transformer En…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件&#xff1a;若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类&#xff0c;对Excel大…

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个&#xff1a; 1. npm (Node Package Manager) 简介&#xff1a; npm 是 Node.js 的默认包管理器&#xff0c;也是最广泛使用的包…

Linux(CentOS)安装 Nginx

CentOS版本&#xff1a;CentOS 7 Nginx版本&#xff1a;1.24.0 两种安装方式&#xff1a; 一、通过 yum 安装&#xff0c;最简单&#xff0c;一键安装&#xff0c;全程无忧。 二、通过编译源码包安装&#xff0c;需具备配置相关操作。 最后附&#xff1a;设置 Nginx 服务开…

深度学习项目启动(笔记用)

深度学习项目启动 项目配置虚拟环境 项目配置虚拟环境

万字长文解读深度学习——卷积神经网络CNN

推荐阅读&#xff1a; 卷积神经网络&#xff08;CNN&#xff09;详细介绍及其原理详解 CNN笔记&#xff1a;通俗理解卷积神经网络 文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;主要组件输入层卷积层 (Convolutional Layer)批归一化层&#xff08;Batch Normalizat…

VBA10-处理Excel的动态数据区域

一、end获取数据边界 1、基本语法 1-1、示例&#xff1a; 2、配合row和column使用 2-1、示例1 2-2、示例2 此时&#xff0c;不管这个有数值的区域&#xff0c;怎么增加边界&#xff0c;对应的统计数据也会跟着变的&#xff01; 二、end的缺陷 若是数据区域不连贯&#xff0c;则…