性能测试工具 — JMeter

一、JMeter准备工作

1、JMeter介绍

Apache JMeter 应用程序是开源软件,是一个 100% 纯 Java 应用程序。用于测试Web应用程序、API和其他网络协议的性能。它具有以下特点:

1. 开源免费:JMeter是Apache软件基金会下的一个开源项目,它被称为Apache JMeter。

2. 基于Java开发:JMeter是基于Java开发的工具,因此在使用JMeter之前,需要确保已经安装了JDK 1.8或更高版本。

3. 跨平台:JMeter是一个跨平台的工具,可以在Windows和Linux等操作系统上运行。

4. 支持多种协议:JMeter支持测试多种网络协议,包括HTTP、HTTPS、FTP、SOAP、REST、JDBC等,使其适用于各种类型的应用程序和服务。

5. 插件生态系统:JMeter具有丰富的插件生态系统,可以根据需要安装和使用额外的监听器、采样器、断言和其他实用工具,扩展其功能和测试能力。

6. 分布式测试:JMeter支持分布式测试,可以将负载分散到多台机器上,以模拟更大规模的并发用户,提供更准确和可扩展的性能测试结果。

2、下载安装JMeter

下载地址:Apache JMeter - Download Apache JMeter

在下载JMeter文件时,"Binaries"和"Source"是两个不同的选项,它们之间有一些区别:

  1. Binaries(二进制文件):这是已经编译和构建好的JMeter可执行文件。如果你只是想使用JMeter进行性能测试,那么推荐下载二进制文件。
  2. Source(源代码):这是以Java编写的JMeter源代码文件。如果你要对JMeter进行二次开发,那么下载源代码是一个好的选择

Apache JMeter是一个开源的负载测试工具,您可以根据您的操作系统选择相应的文件:

  1. 如果您正在使用Windows操作系统,您可以下载并使用"apache-jmeter-5.6.2.zip"文件。
  2. 如果您正在使用类Unix或Linux操作系统,您可以下载并使用"apache-jmeter-5.6.2.tgz"文件。

由于我要在window系统使用jmeter,这里我下载的是"apache-jmeter-5.6.2.tgz"文件:apache-jmeter-5.6.2.zip

3、JMeter运行模式

JMeter提供两种运行模式:GUI模式和CLI模式。

  • GUI模式(图形用户界面模式)是JMeter的默认模式。在GUI模式下,您可以使用JMeter的图形界面创建、配置和运行性能测试计划。通过可视化的界面,您可以添加测试元素、设置参数、运行测试并查看实时结果。这种模式适合于交互式地创建和编辑测试计划,以及进行实时监控和分析测试结果。
  • CLI模式(命令行界面模式)是在命令行下运行JMeter的模式。通过CLI模式,您可以使用命令行选项来配置和运行JMeter,而无需使用图形界面。CLI模式适合于在服务器环境下运行测试,或者用于自动化测试脚本。您可以使用命令行选项来指定测试计划文件、结果输出文件、线程数等参数,以及设置其他运行选项。

4、GUI模式启动JMeter

要启动 jmeter需要先部署jdk环境,详见:JDK和JRE的区别和环境变量配置

之后按照以下步骤进行操作:

  1. 对 "apache-jmeter-5.6.2.zip" 压缩文件进行解压缩。
  2. 进入解压缩后的 bin目录。
  3. 执行命令"jmeter.bat"来启动 JMeter。

也可以直接执行bin目录下的ApacheJMeter.jar文件来启动jmeter。

5、JMeter中文汉法

启动jmeter很容易发现显示的是英文环境,也可以通过设置来显示为中文。

方法1:Options --> Choose Language --> Chinese

注意:这种方法设置的只能在当前界面生效,下次启动jmeter仍是默认为英文。

方法2:\apache-jmeter-5.4.1\bin\ 目录下修改 jmeter.properties文件,设置默认语言为language=zh_CN

再次启动jmeter发现显示的是中文了。

二、测试计划元素组件

JMeter测试计划通常包含以下几个主要的元素组件:

  • 线程组(Thread Group):线程组定义了测试中要模拟的用户数量、循环次数和启动延迟等参数。它是测试计划中最基本的元素,其他组件都是在线程组的上下文中执行。
  • 取样器(Sampler):取样器用于发送请求并模拟用户与被测试应用程序之间的交互。它可以发送不同类型的请求,如HTTP请求、FTP请求、数据库请求等。
  • 逻辑控制器(Logic Controller):逻辑控制器用于定义测试脚本的逻辑流程和执行顺序。
  • 配置元件(Config Element):配置元件用于设置请求的参数或处理测试环境的特定设置。例如,HTTP Cookie管理器用于处理HTTP请求中的Cookie,HTTP Header管理器用于设置HTTP请求的头信息。
  • 监听器(Listener):监听器用于收集和显示测试结果。它可以以不同的形式展示结果,如表格、图表、树形结构等。
  • 定时器(Timer):定时器用于模拟用户之间的间隔时间。可以设置固定延迟、随机延迟或根据特定算法生成延迟时间。
  • 前置处理器(Pre-Processor):前置处理器在每个取样器之前执行,可以对请求进行修改或设置一些前置条件。
  • 后置处理器(Post-Processor):后置处理器在每个取样器之后执行,用于处理服务器的响应结果。可以提取关键信息、对响应进行断言或转换等操作。
  • 断言(Assertion):断言用于验证服务器响应是否符合预期。可以检查响应的内容、响应时间、响应代码等。

这些元素组件可以根据测试需求进行组合和配置,以构建完整的JMeter测试计划。

选中测试计划或者线程组,鼠标右键查看可以添加的组件信息。

1、线程组(Thread Group)

线程组(Thread Group)是任何测试计划的起点。所有控制器和采样器必须位于线程组下。其他元素(例如监听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。顾名思义,线程组元素控制 JMeter 将用于执行测试的线程数。每个线程将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。

线程组配置页面如下:

JMeter线程组有以下三个属性: 

  • Number of Threads (users):表示并发用户数,即同时模拟的用户数量。可以设置为固定值或根据测试需求进行动态调整。
  • Ramp-Up Period:表示启动所有线程所需的时间。它指定了线程组中的线程逐渐启动的时间间隔。例如,如果设置为5秒,并发用户数为10,那么每秒将启动2个线程,直到达到总共的10个线程。
  • Loop Count:表示线程组要执行的循环次数。可以设置为固定次数或选择"Forever"表示无限循环。

这些属性可以根据测试需求进行配置,以模拟不同的并发用户行为和负载情况。

需要特别注意的是:

Ramp-Up时间要根据测试需求和目标来进行选择。可以从 Ramp-up = 线程数开始,然后根据需要向上或向下调整。如果你有大量的并发用户,可以选择较短的 Ramp-Up 时间,例如线程数的一半或四分之一,以快速达到高峰负载。如果你希望逐渐增加用户并观察系统在不同负载下的性能表现,可以选择较长的 Ramp-Up 时间,例如线程数的两倍或更多。

2、取样器(Sampler)

取样器(Sampler)是JMeter中用于发送请求并模拟用户操作的测试元素。它用于模拟不同类型的用户请求,例如发送HTTP请求、FTP请求、JDBC请求等,以便测试目标系统的性能和功能。

JMeter提供了多种取样器,常见的几种类型包括:

1. HTTP请求(HTTP Request):用于发送HTTP请求到目标服务器,可以设置请求方法(GET、POST等)、URL、请求头、请求参数等。

2. FTP请求(FTP Request):用于执行FTP相关操作,如上传文件、下载文件、删除文件等。

3. JDBC请求(JDBC Request):用于执行JDBC数据库操作,如执行SQL查询、插入、更新等。

4. TCP请求(TCP Sampler):用于发送TCP请求,可以自定义请求内容和目标服务器地址。

5. SMTP请求(SMTP Sampler):用于发送电子邮件,可以设置邮件主题、收件人、发件人等。

取样器通常与线程组结合使用,在每个并发用户线程中执行具体的请求操作。通过合理配置取样器,你可以模拟出不同类型的用户请求,测试目标系统在不同负载和压力下的性能和可靠性。

取样器配置页面如下:

3、逻辑控制器(Logic Controller)

4、配置元件(Config Element)

5、监听器(Listener)

6、定时器(Timer)

7、前置处理器(Pre-Processor)

8、后置处理器(Post-Processor)

9、断言(Assertion)

三、制定测试计划

添加元素组件
    配置元素组件
    保存测试计划
    运行测试计划
    终止测试计划Stop 、Shutdown 


reference:

Apache JMeter - User's Manual

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

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

相关文章

HashMap常见面试题

简介 HashMap最早出现在JDK1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,是非线程安全类,在多线程环境下可能会存在问题。 1.8版本的HashMap数据结构: 为什么有的是链表有的是红黑树? 默认链表长度大…

京东大型API网关实践之路

概述 1、背景 京东作为电商平台,近几年用户、业务持续增长,访问量持续上升,随着这些业务的发展,API网关应运而生。 API网关,就是为了解放客户端与服务端而存在的。对于客户端,使开放给客户端的接口标准统…

stable diffusion模型评价框架

GhostReview:全球第一套AI绘画ckpt评测框架代码 - 知乎大家好,我是_GhostInShell_,是全球AI绘画模型网站Civitai的All Time Highest Rated (全球历史最高评价) 第二名的GhostMix的作者。在上一篇文章,我主要探讨自己关于ckpt的发展方向的观点…

ESP8266使用记录(四)

放上最终效果 ESP8266&Unity游戏 整合放进了坏玩具车遥控器里 最终只使用了mpu6050的yaw数据,因为roll值漂移…… 使用了https://github.com/ElectronicCats/mpu6050 整个流程 ESP8266取MPU6050数据,处理后通过udp发送给Unity显示出来 MPU6050_Z…

ElementUI之首页导航与左侧菜单

目录 一、Mock 1.1 什么是Mock.js 1.2 安装与配置 1.2.1 安装mock.js 1.2.2 引入mock.js 1.3 mock.js使用 1.3.1 定义测试数据文件 1.3.2 mock拦截Ajax请求 1.3.3 界面代码优化 二、总线 2.1 定义 2.2 类型分类 2.3 前期准备 2.4 配置组件与路由关系 2.4.1 配置…

基于PHP+MySQL的养老院管理系统

摘要 随着21世纪互联网时代的兴起,我们见证了人们生活方式的巨大改变。这个时代不仅深刻影响了我们的生活,还改变了我们对信息科学的看法。社会的各个领域都在不断发展,人们的思维也在不断进步,与此同时,信息的需求也与…

紫光同创FPGA图像视频采集系统,基于OV7725实现,提供工程源码和技术支持

目录 1、前言免责声明 2、设计思路框架视频源选择OV7725摄像头配置及采集动态彩条HDMA图像缓存输入输出视频HDMA缓冲FIFOHDMA控制模块HDMI输出 3、PDS工程详解4、上板调试验证并演示准备工作静态演示动态演示 5、福利:工程源码获取 紫光同创FPGA图像视频采集系统&am…

分布式文件存储系统minio、大文件分片传输

上传大文件 1、Promise对象 Promise 对象代表一个异步操作,有三种状态: pending: 初始状态,不是成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。 只有异步操作的结果,可以决定当前是哪一种状态&a…

Windows/Linux下进程信息获取

Windows/Linux下进程信息获取 前言一、windows部分二、Linux部分三、完整代码四、结果 前言 Windows/Linux下进程信息获取,目前可获取进程名称、进程ID、进程状态 理论分析: Windows版本获取进程列表的API: CreateToolhelp32Snapshot() 创建进程快照,…

CTF 入门指南:从零开始学习网络安全竞赛

文章目录 写在前面CTF 简介和背景CTF 赛题类型介绍CTF 技能和工具准备好书推荐 写作末尾 写在前面 CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几…

ip的标准分类---分类的Ip

分类的 IP 即将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。 其中第一个字段是网络号(net-id),它标志主机或路由器所连接的网络。一个网络号在整个因特网内必须是唯一的。 第二个字段是主机号&#xf…

jupyter notebook可以打开,但无法打开.ipynb文件,报错500 : Internal Server Error

1、错误信息 2、解决办法 打开Anaconda Promt界面,进入自己的虚拟环境。在命令行输入以下指令: pip install --upgrade nbconvert