使用jmeter做压力测试

介绍

JMeter 是一款开源的、纯 Java 应用程序,主要用于对软件进行​​性能测试​ ​和​​负载测试​​。

它的核心功能可以概括为:

  1. ​模拟高并发负载​​:用一个图形化界面创建测试计划,模拟大量用户同时访问服务器(如 Web 服务器、数据库等),从而测试其性能和稳定性。

  2. ​测量和分析性能​​:在测试过程中,JMeter 会收集并生成各种性能指标报告,例如:

    • ​响应时间​​:服务器处理请求并返回结果所花费的时间。

    • ​吞吐量​​:单位时间内处理的请求数量。

    • ​错误率​​:请求失败的百分比。

  3. ​支持多种协议​​:除了最常用的 HTTP/HTTPS(用于测试网站、API),它还支持 FTP、JDBC(数据库)、SOAP/REST Web Services、JMS、TCP 等。

准备工作

使用JMeter之前,先安装JAVA环境

解压下载的二进制包,进入bin目录,使用jmeter.bat启动程序。

注意:启动后有两个窗口,一个​cmd窗口,一个JMeter的 GUI。

这里cmd窗口的意思是:

不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试:

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

并且修改JMeter批处理文件的环境变量:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"

对于GUI界面可以通过Options---Choose Language变更为简体中文

创建测试

创建线程组:在"测试计划"上右键 【添加】-->【Threads(Users)】-->【线程组】。设置线程数和循环次数。

配置原件:在刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP默认请求值】,配置需要进行测试的程序协议、地址和端口。

构造HTTP请求:在"线程组"右键 【添加-】->【samlper】-->【HTTP 请求】设置需要测试的API的请求路径和数据。

添加HTTP请求头 :在我们刚刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP信息头管理器

】。因为我要传输的数据为json,所以设置一个 Content-Type:application/json,然后我压测的项目有jwt校验,所以还有一个token:

添加断言 :在我们刚刚创建的线程组上右键 【添加】-->【断言】-->【响应断言

】。

根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以配置错误信息

**添加察看结果树:**在刚刚创建的线程组上右键 【添加】-->【监听器】-->【察看结果树】。

直接添加,然后点击运行按钮就可以看到结果了。

添加Summary Report(聚合报告)

在刚刚创建的线程组上右键 【添加】-->【监听器】-->【Summary Report】。

直接添加,然后点击运行按钮就可以看到结果了

保存后下次可以在【文件】-->【最近打开】打开

开始测试

用命令行来执行

bash 复制代码
仅供参考:
jmeter -n -t D:/study/Nu11Cat/yace/train.jmx -l D:/study/Nu11Cat/yace/jmeter/test_result/result.txt -e -o D:/study/Nu11Cat/yace/jmeter/test_report

D:\study\Nu11Cat\Imitation-of-12306-ticketing-system\apache-jmeter-5.6.3\bin\jmeter.bat -n -t D:/study/Nu11Cat/yace/train.jmx -l D:/study/Nu11Cat/yace/jmeter/test_result/result.txt -e -o D:/study/Nu11Cat/yace/jmeter/test_report


testplan/RedisLock.jmx 为测试计划文件路径

testplan/result/result.txt 为测试结果文件路径

testplan/webreport 为web报告保存路径

然后会在指定路径生成一个html,打开即可看到压测结果:

补充:压测请关闭其他所有与压测代码无关的软件,如IDEA,聊天软件,音乐软件等,尽可能发挥机器性能,并持续关注压测时的CPU或内存占用,或者使用其他监察工具。

相关推荐
Wpa.wk1 小时前
性能测试工具 - JMeter工具组件介绍一
java·经验分享·测试工具·jmeter·性能测试
一三检测冯野180212918135 小时前
ASTM D642标准护航医疗生物包装 专业压力测试筑牢运输防线
压力测试·模拟运输测试·包装运输测试·包装振动测试·环境试验·包装跌落测试
汽车仪器仪表相关领域19 小时前
全自动化精准检测,赋能高效年检——NHD-6108全自动远、近光检测仪项目实战分享
大数据·人工智能·功能测试·算法·安全·自动化·压力测试
帅次1 天前
从开发到部署:软件实现、测试与交付全流程核心技术解析
功能测试·单元测试·测试用例·集成测试·压力测试·模块测试·安全性测试
shughui3 天前
JMter(六):jmete变量提取常用方式
jmeter·性能优化
测试者家园3 天前
AI 智能体如何构建模拟真实用户行为的复杂负载场景?
人工智能·压力测试·性能测试·智能体·用户行为·智能化测试·软件开发和测试
大霞上仙3 天前
jmeter 两个循环控制器的使用例子
jmeter
张永清-老清3 天前
每周读书与学习->JMeter性能测试脚本编写实战(三)如何利用JMeter为MySQL数据库构造测试数据
数据库·测试工具·jmeter·压力测试·性能调优·jmeter性能测试·每周读书与学习
汽车仪器仪表相关领域4 天前
工况模拟精准检测,合规减排赋能行业 ——NHASM-1 型稳态工况法汽车排气检测系统项目实战经验分享
数据库·算法·单元测试·汽车·压力测试·可用性测试
汽车仪器仪表相关领域4 天前
光轴精准测量,安全照明保障——NHD-8101/8000型远近光检测仪项目实战分享
数据库·人工智能·安全·压力测试·可用性测试