使用 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)?
185 0
|
6月前
|
Java 测试技术 Apache
用JMeter做接口压力测试
JMeter是Apache组织开发的基于Java的压力测试工具,它是用 Java 语言编写的
63 0
|
6月前
|
测试技术
JMeter压力测试简单例子
JMeter压力测试简单例子
70 0
|
8月前
|
XML 前端开发 测试技术
使用 jMeter 对 SAP Spartacus 进行并发性能测试
使用 jMeter 对 SAP Spartacus 进行并发性能测试
75 0
|
4天前
|
数据可视化 Java 测试技术
JMeter 如何实现 Elasticsearch 8.X 性能测试?
JMeter 如何实现 Elasticsearch 8.X 性能测试?
12 0
|
4月前
|
JSON 网络协议 Java
使用Jmeter进行功能和性能测试
使用Jmeter进行功能和性能测试
|
25天前
|
SQL Java 测试技术
Jmeter的安装与快速使用(做并发测试)
Jmeter的安装与快速使用(做并发测试)
20 0
|
5月前
|
消息中间件 测试技术
百度搜索:蓝易云【使用JMeter安装RabbitMQ测试插件的步骤】
以上是安装RabbitMQ测试插件的基本步骤。根据您的具体需求和JMeter版本,可能会有一些细微的差异,但总体流程应该是相似的。
56 1
|
6月前
|
Java 测试技术 Apache
JMeter压力测试总结
JMeter压力测试总结
43 0
|
6月前
|
JSON Java 测试技术
Jmeter压力测试
Jmeter压力测试