使用 JMeter 进行 Performance Testing 指北

简介: 使用 JMeter 进行 Performance Testing 指北

1. 概述

在本文中,我们将使用 Apache JMeter 来配置和执行性能测试。

2. 配置 JMeter

首先我们需要从官网下载 JMeter,并解压缩,进入 bin 文件夹下并双击可执行文件(Windows 中可执行文件为 .bat,Linux/Unix 中可执行文件为 .sh)。

接下来,我们只需要将 bin 添加到系统环境变量中,这样我们就可以从命令行访问。

截止目前,最稳定的版本是 5.5,点击这里查看最新版本。

3. 创建 JMeter 脚本

现在来编写第一个 JMeter 脚本(一个包含测试技术描述的文件)。

我们要测试的 API 是一个简单的 SpringBoot 应用程序提供的 REST API 服务。

先更新 Test Plan 的名称,然后添加一个 Thread Group

Thread Group 可以通过模拟用户行为与应用程序交互,在 GUI 界面上右击的脚本名称,然后按照下图进行操作:

image.png

接着配置 Thread Group,指定同时向应用程序发出请求的用户数:

image.png

这里我们指定了如下参数配置:

  • NameThread Group 的名称
  • The number of Threads(users):并发用户数
  • Ramp-up:从 0 到设置的并发数的时间
  • Loop count:重复次数

添加一个 HTTP Request Sampler,模拟 5 个用户调用这个请求。

填入 API 的地址描述信息,如下图所示:

image.png

只需填写 URL 地址、端口和请求的 URI 即可。

接下来,点击 “Add>Listener” 菜单,添加 “View Result Tree”(如果返回结果是一个记列表,使用 View Results in Table),然后模拟用户请求。

点击顶部的绿色箭头按钮执行测试并查看响应数据:

image.png

我们可以在“采样器结果”选项卡上看到更详细的响应表示。

最后在 HTTP Sampler 中添加一个 Duration Assertion ,设置每个持续时间超过 5 毫秒的请求都将被认为是失败的测试:

image.png

在重新运行测试后,我们看到有一些(这里是1个)用户无法在 5 毫秒内获得响应:

image.png

将扩展名为.jmx的测试脚本保存在 API 应用程序(Spring Boot 应用)的 resources 文件夹中。

除了上面提到的组件之外,还有更多组件可用于配置我们的测试文件:

  • JDBC Request:用于向数据库发送 JDBC 请求(SQL查询),在使用之前,我们需要设置一个JDBC连接配置(JDBC Connection Configuration
  • XML Assertion:测试响应数据是否是正确的 XML 文档
  • Size Assertion:断言响应中包含正确的字节数
  • JMS Publisher:按照 J2EE 消息传递规范将消息发布到给定的目标(主题/队列)

所有组件都在用户手册中作了详细介绍

4. 运行 JMeter 测试

运行JMeter测试有两种方法,一种是使用可用的 Maven 插件,另一种是非 GUI 模式下的 JMeter 应用程序。

无论哪一种方式,两者都需要配置 JMeter 脚本的访问路径。

4.1. JMeter Maven插件

JMeter Maven Plugin 是一个 Maven 插件,它将运行 JMeter 测试的功能作为构建的一部分;该插件的最新版本是3.6.1,与Apache JMeter 5.5兼容。

pom.xml 中添加 JMeter Maven Plugin

<plugin>
    <groupId>com.lazerycode.jmeter</groupId>
    <artifactId>jmeter-maven-plugin</artifactId>
    <version>2.6.0</version>
    <executions>
        <execution>
            <id>jmeter-tests</id>
            <goals>
                <goal>jmeter</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <testFilesDirectory>${project.basedir}/src/main/resources</testFilesDirectory>
        <resultsDirectory>${project.basedir}/src/main/resources</resultsDirectory>
    </configuration>
</plugin>
复制代码

接着可以使用 mvn-verify 运行所有测试,或者只使用 JMeter 运行 mvn-jmeter:jmeter;以下是命令的控制台输出:

image.png

注意:这里我们指定了脚本所在的目录:

  • 脚本默认目为:${project.basedir}/src/test/jmeter*
  • 结果存储默认目录为:${project.basedir}/target/jmeter/results

插件文档可点击这里访问。

4.2. 非 GUI 模式

另一种方法是通过 JMeter 可执行文件,假设它可以通过命令行使用,我们可以这样做:

jmeter -Jjmeter.save.saveservice.output_format=xml
-n -t src/main/resources/JMeter.jmx -l src/main/resources/JMeter.jtl
复制代码

我们将XML设置为输出格式,它填充了精确的测试文件和结果文件。

注意:建议不要将 GUI 模式用于测试执行,GUI 模式仅用于测试创建和调试。

5. 结论

在本文中,我们在通过配置 Apache JMeter 实现 SpringBoot 应用的性能测试,使用 Maven 插件运行性能测试,同时了解如何设计基本性能测试用例。


相关文章
|
测试技术
软件测试面试题:解释如何在JMeter中执行尖峰测试(Spike testing)?
软件测试面试题:解释如何在JMeter中执行尖峰测试(Spike testing)?
446 0
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
1388 0
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
2238 10
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
679 3
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
589 2
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1702 23
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
1413 0
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
723 1
Jmeter如何对UDP协议进行测试?
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
1144 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存