1. 概述

Gatling 是一款负载测试工具,对 HTTP 协议提供了出色的支持,这使其成为对任何 HTTP 服务器进行负载测试的绝佳选择。

本快速指南将向您展示如何为 HTTP 服务器负载测试设置一个简单场景

Gatling 模拟脚本是用 Scala 编写的,但别担心——该工具提供了 GUI 来帮助我们录制场景。完成场景录制后,GUI 会创建代表模拟的 Scala 脚本。

运行模拟后,我们将得到一个可以直接展示的 HTML 报告

最后但同样重要的是,Gatling 的架构是异步的。这种架构让我们能够将虚拟用户实现为消息而不是专用线程,使其非常节省资源。因此,同时运行数千个并发虚拟用户不是问题。

另外值得注意的是,核心引擎实际上是协议无关的,因此完全有可能实现对其他协议的支持。例如,Gatling 目前还提供 JMS 支持。

2. 使用 Archetype 创建项目

虽然我们可以将 Gatling 作为 .zip 捆绑包获取,但我们选择使用 Gatling 的 Maven Archetype。这让我们能够将 Gatling 集成到 IDE 中运行,并使其易于在版本控制系统中维护项目。

在命令行中输入:

mvn archetype:generate

然后,当提示时:

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):

输入:

gatling

您应该会看到:

Choose archetype:
1: remote -> 
  io.gatling.highcharts:gatling-highcharts-maven-archetype (gatling-highcharts-maven-archetype)

输入:*

1

以选择 archetype,然后选择要使用的版本(选择最新版本)。

在确认创建 archetype 之前,为类选择 groupIdartifactIdversionpackage 名称。

最后将 archetype 导入 IDE——例如导入 Scala IDE(基于 Eclipse)或 IntelliJ IDEA

3. 定义场景

在启动录制器之前,我们需要定义一个场景。它将代表用户在 Web 应用程序中导航时实际发生的情况。

在本教程中,我们将使用 Gatling 团队提供的示例应用程序,该应用程序托管在 URL http://computer-database.gatling.io。

(注意:原始示例中使用的示例网站已不再可用。您可以使用 https://ecomm.gatling.io 作为替代。)

我们的简单场景可以是:

  • 用户访问应用程序
  • 用户搜索 'amstrad'
  • 用户打开其中一个相关型号
  • 用户返回主页
  • 用户遍历页面

4. 配置录制器

首先,从 IDE 启动 Recorder 类。启动后,GUI 让您配置如何录制请求和响应。选择以下选项:

  • 监听端口为 8000
  • 包名为 org.baeldung.simulation
  • 类名为 RecordedSimulation
  • Follow Redirects? 选中
  • Automatic Referers? 选中
  • 选择 Black list first 过滤策略
  • 黑名单过滤器中包含 .*\.css、*.*\.js* 和 .*\.ico

设置

现在我们必须配置浏览器使用配置期间选择的端口(8000)。这是浏览器必须连接的端口,以便 Recorder 能够捕获我们的导航。

以下是在 Firefox 中的操作方法:打开浏览器的高级设置,然后转到网络面板并更新连接设置:

代理设置

5. 录制场景

现在一切都已配置好,我们可以录制上面定义的场景。步骤如下:

  1. 点击"开始"按钮开始录制
  2. 转到选定的网站
  3. 搜索名称中包含 'amstrad' 的型号
  4. 选择 'Amstrad CPC 6128'
  5. 返回主页
  6. 通过点击 Next 按钮多次遍历型号页面
  7. 点击"停止并保存"按钮

模拟将在配置期间定义的 org.baeldung 包下生成,名称为 RecordedSimulation.scala

6. 使用 Maven 运行模拟

要运行我们录制的模拟,我们需要更新 pom.xml

<plugin>
    <groupId>io.gatling</groupId>
    <artifactId>gatling-maven-plugin</artifactId>
    <version>2.2.4</version>
    <executions>
        <execution>
            <phase>test</phase>
            <goals><goal>execute</goal></goals>
            <configuration> 
                <disableCompiler>true</disableCompiler> 
            </configuration>
        </execution>
    </executions>
</plugin>

这让我们能够在测试阶段执行模拟。要启动测试,只需运行:

mvn test

模拟完成后,控制台将显示 HTML 报告的路径。

注意:*true* 配置是因为我们将使用 Scala 与 Maven,这个标志确保我们不会最终编译两次模拟。更多细节可在 Gatling 文档 中找到。

7. 查看结果

如果我们打开建议位置的 index.html,报告如下所示:

报告

8. 总结

在本教程中,我们探讨了使用 Gatling 对 HTTP 服务器进行负载测试。该工具让我们能够借助 GUI 根据定义的场景录制模拟。录制完成后,我们可以启动测试。测试报告将以 HTML 概览的形式呈现。

为了构建我们的示例,我们选择了使用Maven archetype。这有助于我们将Gatling集成到IDE中,并使其易于在版本控制系统中管理项目。

示例代码可以在GitHub项目中找到。


原始标题:Intro to Gatling | Baeldung

» 下一篇: Spring Boot jOOQ支持