首页 > 其他分享 >使用 JMeter 进行压力测试

使用 JMeter 进行压力测试

时间:2024-08-18 19:15:37浏览次数:10  
标签:jmeter -- 添加 线程 测试 压力 JMeter

原文:使用 JMeter 进行压力测试

一、前言

压力测试是每一个 Web 应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具 JMeter。

二、关于 JMeter

Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器,等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl 脚本,java 对象,数据库和查询,FTP 服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

官网:http://jmeter.apache.org/download_jmeter.cgi

这里我选用了 4.0 版本的二进制包:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip

更多内容介绍 https://baike.baidu.com/item/Jmeter/3104456

三、准备工作

因为 JMeter 是使用 JAVA 写的,所以使用 JMeter 之前,先安装 JAVA 环境,本文就不讲不如安装 JAVA 环境了。

JAVA 环境变量配置:https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html

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

启动之后会有两个窗口,一个 CMD 窗口,一个 JMeter 的 GUI。前面不要忽略 CMD 窗口的提示信息:

img

JMeter:

img

CMD 窗口的提示信息

================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

上面的意思就是:不要使用 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"

更改语言为中文

官方默认为我们提供了简体中文。通过【Options】->【Choose Language】变更为简体中文

img

四、创建测试

1.创建线程组

在“测试计划”上右键【添加】-->【Threads(Users)】-->【线程组】。

img

设置线程数和循环次数。我这里设置线程数为 500,循环一次。

img

2.配置元件

在我们刚刚创建的线程组上右键【添加】-->【配置元件】-->【HTTP 请求默认值】。

img

配置我们需要进行测试的程序协议、地址和端口

img

当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。

3.构造 HTTP 请求

在“线程组”右键【添加-】->【samlper】-->【HTTP 请求】设置我们需要测试的 API 的请求路径和数据。我这里是用的 json

img

4.添加 HTTP 请求头

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

因为我要传输的数据为 json,所以设置一个 Content-Type:application/json

img

5.添加断言

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

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

img

6.添加察看结果树

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

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

img

7.添加 Summary Report

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

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

img

为了不引起不必要的争论,隐藏了 TPS。此数据不具备任何价值,仅仅为文章演示。

8.测试计划创建完成

记得点保存。

五、执行测试计划

前面我们说过,执行测试计划不能用 GUI,需要用命令行来执行。

img

我这里执行的命令为:

jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport

说明:

testplan/RedisLock.jmx 为测试计划文件路径
testplan/result/result.txt 为测试结果文件路径
testplan/webreport 为 web 报告保存路径

Web 报告如下:

img

六、写在最后

线程数量和循环次数将会影响最终的测试报告,请大家多多测试。

标签:jmeter,--,添加,线程,测试,压力,JMeter
From: https://www.cnblogs.com/Higurashi-kagome/p/18365952

相关文章

  • 【PID控制】针对扭转系列弹性驱动器的力矩控制策略基准测试研究(Matlab代码实现)
      ......
  • 黑马毕设分享《SpringBoot大学生体质测试管理系统》(源码+lw+部署文档+讲解等)
    文章目录1.前言黑马设计——专注大学生的项目实战开发,免费讲解,毕业答疑辅导黑马设计工作室简介:黑马设计是一家专注大学生的项目实战开发,免费讲解,毕业答疑辅导的工作室✅,创始人是硕士毕业于华南理工大学,工科专业,目前团队成员全职+兼职上百余人,运营线上店铺2家,与B站(IT实战,......
  • 无涯 - 服务端性能测试实战 - Linux中IO系统负载瓶颈分析
    模拟100个进程不断的进行IO读写 执行后,看IO负载,呈上升趋势 查看进程的资源信息 iowait一直呈上升趋势,且系统资源sys也一直呈上升趋势 查找一直占用IO的进程PID  数入命令,htop此时可以看到CPU平均负载也呈上升趋势 将资源占用比较多的进程kill掉......
  • 量化策略开发步骤系列(5)前向测试和统计意义
    量化策略开发步骤系列(5)前向测试和统计意义前向测试统计意义随机化交易测试重写过去结论这是量化交易系列文章的第二系列——量化策略开发步骤,第一系列请参考专栏:量化交易系统。很多朋友反馈最近的文章代码太多,看不懂。这一部分将实现零代码分享,尽可能简单地......
  • 【全网独家】OpenCV C++ 图像处理实战 :多二维码识别(代码+测试部署)
    介绍在现代社会,二维码无处不在,从支付、物流到用户身份验证,二维码的应用极其广泛。本文将详细介绍如何使用OpenCV在C++环境下实现多二维码识别。我们将涵盖其应用场景、原理解释、算法流程图以及实际代码实现。应用使用场景仓储物流管理:快速扫描多个包裹上的二维码,实现高......
  • 8.17日二分测试总结
    8.17日二分测试总结比赛传送门分数情况A.砍树B.买木头C.数列分段2D.吃冰棍E.跳石头F.奶牛晒衣服10080100\(_{没做:(}\)100总体分数\(_{很惨}\)T1.P1873[COCI2011/2012#5]EKO/砍树题目传送门问题分析运用二分答案与check函数check函数......
  • day24-测试之接口测试基础
    目录一、接口的定义二、接口的优点三、API接口四、接口测试流程五、网络基础概念六、HTTP和RURL七、get和post请求八、数据格式九、状态码十、restful风格十一、接口工具一、接口的定义     程序之间协作所要遵循的一套规范、标准二、接口的优点  ......
  • day23-测试自动化之Appium的滑动和拖拽事件、高级手势ActionChains、手机操作API
    目录一、滑动和拖拽事件    1.1.应用场景    1.2.swipe滑动事件    1.3.scroll滑动事件    1.4.drag_and_drop拖拽事件    1.5.滑动和拖拽事件的选择二、高级手势ActionChains    2.1.应用场景    2.2.使用......
  • JetBrains Aqua 2024.2 (macOS, Linux, Windows) - 测试自动化 IDE
    JetBrainsAqua2024.2(macOS,Linux,Windows)-测试自动化IDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-aqua/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAqua测试自动化IDE享受更高效的测试体验为什么选择Aqua......
  • 《软件测试》黑书全22章笔记总结——软测新手小白必读
    一、软件测试综述1.第一章:软件测试的背景1.1软件缺陷只有至少满足下列5个规则之一才称为发生了一个软件缺陷软件未实现产品说明书要求的功能软件出现了产品说明书指明不应该出现的错误软件实现了产品说明书未提到的功能软件未实现产品说明书虽未明确提及但应该实现的......