1. 概述

Gatling是一款负载测试工具,特别支持HTTP协议,因此非常适合用于负载测试任何HTTP服务器。

本快速指南将展示如何设置一个简单的场景,以对HTTP服务器进行负载测试。

Gatling的模拟脚本是用Scala编写的,但别担心,工具提供了一个图形用户界面(GUI),可以帮助我们录制场景。完成录制后,GUI会自动生成代表模拟的Scala脚本。

运行模拟后,我们将得到准备好的HTML报告

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

另外值得一提的是,核心引擎实际上是协议无关的,所以完全有可能添加对其他协议的支持。例如,Gatling目前还提供了JMS支持。

2. 使用Archetype创建项目

虽然我们可以获取Gatling的捆绑包作为.zip文件,但我们选择使用Gatling的Maven Archetype。这样可以让我们将Gatling集成到IDE中,并使其易于在版本控制系统中维护项目。请注意,Gatling需要JDK8

在命令行中输入:

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

我们的简单场景可能如下:

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

4. 配置记录器

首先从IDE中启动Recorder类。启动后,GUI允许你配置请求和响应的记录方式。选择以下选项:

  • 设置监听端口为8000
  • 包装器为org.baeldung.simulation
  • 类名为RecordedSimulation
  • 启用重定向?选中
  • 自动来源?选中
  • 选择黑名单优先过滤策略
  • 黑名单过滤器包括*\\.css*\\.js*\\.ico

设置

现在,我们必须配置我们的浏览器使用在配置中定义的端口(8000)。这是我们的浏览器必须连接的端口,以便记录器能够捕获我们的导航。

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

代理设置

5. 录制场景

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

  1. 通过点击“开始”按钮开始录制
  2. 访问网站:http://computer-database.gatling.io
  3. 搜索名称包含'amstrad'的模型
  4. 选择'Amstrad CPC 6128'
  5. 返回主页
  6. 通过点击“下一个”按钮多次遍历模型页面
  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报告的路径。

注意:我们使用了<disableCompiler>true</disableCompiler>配置,因为我们将使用Scala与Maven一起工作,这个标志可以确保我们不会两次编译模拟。更多详细信息可在官方文档中找到。

7. 查看结果

如果我们打开建议的位置的index.html,报告看起来如下:

报告

8. 总结

在这篇教程中,我们探讨了如何使用Gatling对HTTP服务器进行负载测试。该工具借助图形用户界面帮助我们根据定义的场景录制模拟。录制完成后,我们可以运行测试。测试报告将以HTML摘要的形式呈现。

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

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


» 下一篇: Spring Boot jOOQ支持