使用 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)?
224 0
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
141 3
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
113 2
|
3月前
|
测试技术 持续交付 Apache
深度挖掘:Python性能测试中JMeter与Locust的隐藏技能🔍
【8月更文挑战第5天】随着软件规模扩大,性能测试对系统稳定性至关重要。Apache JMeter和Locust是两大主流工具,各有千秋。本文探索它们在Python环境下的进阶用法,挖掘更多性能测试潜力。JMeter功能强大,支持多种协议,可通过命令行模式执行复杂测试计划,并与Python集成实现动态测试数据生成。Locust基于Python,通过编写简洁脚本模拟HTTP请求,支持自定义请求及与Python库深度集成。掌握这些技巧可实现高度定制化测试场景,有效识别性能瓶颈,提升应用稳定性。
128 1
|
3月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【8月更文挑战第5天】性能测试确保应用高负载下稳定运行。Apache JMeter与Locust是两大利器,助力识别解决性能瓶颈。本文介绍这两款工具的应用与优化技巧,并通过实战示例展示性能测试流程。首先,通过JMeter测试静态与动态资源;接着,利用Locust的Python脚本模拟HTTP请求。文中提供安装指南、命令行运行示例与性能优化建议,帮助读者掌握性能测试核心技能。
130 0
|
20天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
45 3
|
19天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
35 1
|
2月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
63 4
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
248 7
Jmeter实现WebSocket协议的接口测试方法