首页 > 其他分享 >JMeter使用

JMeter使用

时间:2024-08-07 10:32:07浏览次数:15  
标签:测试计划 请求 添加 线程 右键 使用 JMeter

实习过程中,使用到了JMeter测试工具,记录一下基本使用。

JMeter 是一个开源的负载测试工具,可以用来测试各种服务的性能,包括 Web 应用、数据库、FTP 服务等。它的界面友好,功能强大,支持多种协议。本文将介绍如何使用 JMeter 进行性能测试。

安装及使用

  1. 访问 Apache JMeter官网 下载最新版本的 JMeter。
  2. 解压下载的压缩文件,进入解压后的目录。
  3. 运行 bin 目录下的 jmeter.bat(Windows)或 jmeter.sh(Unix/Linux)文件启动 JMeter。

基本页面及操作介绍

  • 菜单栏:包含文件、编辑、运行、选项、工具和帮助菜单。
  • 工具栏:包含常用操作按钮,如新建、打开、保存、运行、停止等。
  • 测试计划树:左侧的树状结构,用于组织和配置测试计划的各个组件。
  • 工作区:右侧的编辑区域,用于配置选中的测试组件的详细信息。
  • 日志视图:显示 JMeter 的日志信息。

创建一个基本的测试计划

1. 添加测试计划

在左侧的测试计划树中,右键点击“测试计划”节点,选择“添加” -> “线程(用户)” -> “线程组”。线程组是 JMeter 中的一组用户,可以模拟并发用户数。

2. 配置线程组

选择刚刚添加的线程组,在右侧的工作区中配置线程属性:

  • 线程数:10(模拟 10 个并发用户)。
  • Ramp-Up 时间:5 秒(5 秒内启动所有线程)。
  • 循环次数:1(每个线程执行一次)。

3. 添加 HTTP 请求

右键点击线程组,选择“添加” -> “取样器” -> “HTTP 请求”。在右侧的工作区中配置 HTTP 请求的属性:


  • 名称:HTTP请求名称
  • 协议:http
  • 服务器名称或 IPwww.baidu.com(要测试的目标服务器)。
  • 端口号:8082(目标服务器的端口号)。
  • HTTP请求:GET
  • HTTP 请求路径/user/list(请求的具体路径)。

4. 添加监听器

监听器用于收集和查看测试结果。右键点击线程组,选择“添加” -> “监听器” -> “查看结果树”。结果树可以详细显示每个请求的响应。

5. 运行测试计划

点击工具栏上的“启动”按钮(绿色三角形)开始测试。测试运行后,可以在“查看结果树”中查看每个请求的详细响应信息。

可以选择返回结果的格式,查看是否符合预期结果

6. 分析测试结果

JMeter 提供多种监听器用于分析测试结果,例如:

  • 聚合报告:右键点击线程组,选择“添加” -> “监听器” -> “聚合报告”。显示汇总的性能指标,如平均响应时间、

根据需要可自行查看

常用到的一些工具

1. 添加Json提取器

当某个请求的参数需要用到之前的返回结果时,可以通过JSON提取器,提取返回结果中的值。

右键点击“HTTP请求”-“添加”-“后置处理器”-“JSON提取器”


JSON PATH语法可以通过查看结果树获取,选择JSON Path Tester格式。

JSON Path语法格式:

从根元素由上往下提取需要的元素

  • $:表示根元素

  • .[]:表示子元素

在使用JSON提取器提取到变量后,即可在后续请求中携带。使用${xxx}即可替换为对应的数据。

可以看到在发送请求时,${}自动替换成了提取的值

2. 添加定时器

定时器用于控制两个请求之间的时间间隔,比如在增、删、改这些操作后立即查询,如果不添加定时器,可能会出现请求已经发送,但是数据库没有发生改变的情况。这里就需要添加定时器,在间隔一段时间后再进行查询。

右键点击“HTTP请求”-“添加”-“定时器”-“固定定时器”

可以设置名称、线程延迟等。

3. 添加用户参数

我们可以添加用户参数用于http请求参数

右键点击“线程组”-“添加”-“前置处理器”-“用户参数”

在用户参数中,我们既可以设定固定的值,也可以调用JMeter的函数获取需要的值。

常见JMeter函数可以获取当前时间等,有需要请查阅其他资料

在后续请求中,通过${}的形式调用设置好的用户参数

可以看到,在后续请求中即可引用相关参数

Linux环境JMeter的使用

为什么要非GUI模式运行

jmeter是java语言开发,实际是运行在JVM中的,GUI模式运行需要耗费较多的系统资源,一般来说,GUI模式要占用10%-25%的系统资源。

而使用非GUI模式(即linux或dos命令)可以降低对资源的消耗,提升单台负载机所能模拟的并发数。

1. 环境配置:安装jdk

2. 下载和安装JMeter:

下载JMeter压缩包

解压至linux目录

3. Windows下创建测试计划

Windows环境下启动JMeter,设置好压测环境和场景,保存至.jmx文件中

4. Linux下运行测试计划

移动至JMeter文件夹的bin目录,如果设置了环境变量,可以在任意目录下直接运行 JMeter。

使用以下命令在非GUI模式下运行测试计划:

./jmeter.sh -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

这里的参数解释:

-n:表示非GUI模式(non-GUI mode)

-t:指定测试计划文件(.jmx 文件)的路径

-l:指定结果文件(.jtl 文件)的路径,用于保存测试结果

-e:测试结束后生成报告

-o:测试报告存放目录,必须是空目录

5. 查看测试结果

可以通过文本编辑工具查看.jtl文件

vim工具打开:vi test.jtl

Notepad++打开:

也可以通过Windows下JMeter GUI界面进行查看

右键点击“线程组”-“添加”-“监听器”-“汇总报告”,导入jtl文件

也可以打开指定目录下生成的html格式的测试报告。

涉及到的参数有

  1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
  2. #样本(#Samples):请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  3. 平均值(Average):平均响应时间——默认情况下是单个 Request 的平均响应时间,
  4. 中位数(Median):也就是 50% 用户的响应时间
  5. 90%百分位(90% Line):90% 用户的响应时间
  6. 最小值(Min):最小响应时间
  7. 最大值(Max):最大响应时间
  8. 异常%(Error%):错误率——错误请求数/请求总数
  9. 吞吐量(Throughput):默认情况下表示每秒完成的请求数(Request per Second),
  10. 发送/接收KB/Sec:每秒向服务器端发送或从服务器端接收到的数据量

标签:测试计划,请求,添加,线程,右键,使用,JMeter
From: https://www.cnblogs.com/forest-pan/p/18346456

相关文章

  • (五)time库的使用
    Python是一种功能强大的编程语言,其标准库中包含了丰富的模块和函数,用于处理时间和日期信息。其中,time模块提供了对时间的访问和处理功能,使得程序员可以轻松地操作时间数据。本篇博文将详细介绍time库的使用方法,包括基本介绍、时间获取方式、时间格式化和程序计时应用。1.time库......
  • AXI-LITE使用教程(三)
    免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。读者在使用本文信息时,应自行......
  • Python从0到100(四十九):数据库设计及Django ORM使用
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • 教程 | USB-IF USBCV软件工具使用指南
    一.概述CVTest是基于USBCV软件工具的合规性测试,可以验证设备是否符合USB规范和标准。USBCV则是USB-IF提供的一款免费USB装置测试软体,简要做USB2.0及USB3.0装置相关测试。本文将基于NXPLPC5516HID类键盘简要讲解USBCV中公有USB请求测试及HID类测试步......
  • es6-string-html vscode插件 js里面template的高亮插件 无构建vue使用
    es6-string-htmlvscode插件js里面template的高亮插件无构建vue使用这个插件可以让js里面的template的字符串高亮,前面加/*html*/Refference:无构建和打包,浏览器直接吃上Vue全家桶?https://juejin.cn/post/7399094428343959552......
  • PostgreSQL学习之pg_recvlogical与pgoutput的使用
        参考:        pg内功修炼:逻辑复制_pgoutput-CSDN博客        PG原生解码工具pg_recvlogical的使用-在脑裂时帮我们找回丢失的数据-腾讯云开发者社区-腾讯云(tencent.com)        postgresql数据库的原生解码插件pg_recvlogical可以将wal......
  • conda的使用
    基本命令创建环境condacreate[可选项]env_namepython=3.7#可选项-c镜像地址,采用镜像地址创建环境#例如:condacreate-chttps://conda.anaconda.org/conda-forge-npython37python=3.7激活环境第一次采用sourceactivateenv_name查看有哪些环境condaenvl......
  • 使用 Flask 和 Yolov2 在 uLong32 中使用区域指针检测 2024 年奥林匹克数据集中的浮动
    你好StackOverflow!!!c:我正在使用#Yolov2和embedded#CVSSfordetecting浮动UIeleme#any视频对象实例中的ntse;在eexampl......
  • Python Django,使用外部MSSQL数据库
    我正在尝试创建一个连接到外部MSSQL数据库以仅检索信息(只读)的django网站。这个数据库非常庞大,有数百个表。我目前可以通过在django应用程序中创建一个函数来使其工作,该函数使用connectionString并运行原始SQL查询并将其返回到pandas数据帧中。不知何故,我感觉......
  • 使用 Python 中的 Matplotlib 和时间序列索引生成奇怪的图
    我正在尝试使用Python中的Matplotlib绘制一些时间序列数据,但生成的图看起来很奇怪,我不明白为什么。这是我正在使用的代码:filtered_df=df.loc[(df.index>'2010-01-01')&(df.index<='2010-01-08')]#Plottingthedatafig,axs=plt.subplots(1,1,figsize=(12,......