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 之前,为类选择 groupId、artifactId、version 和 package 名称。
最后将 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. 录制场景
现在一切都已配置好,我们可以录制上面定义的场景。步骤如下:
- 点击"开始"按钮开始录制
- 转到选定的网站
- 搜索名称中包含 'amstrad' 的型号
- 选择 'Amstrad CPC 6128'
- 返回主页
- 通过点击 Next 按钮多次遍历型号页面
- 点击"停止并保存"按钮
模拟将在配置期间定义的 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 报告的路径。
注意:*
7. 查看结果
如果我们打开建议位置的 index.html,报告如下所示:
8. 总结
在本教程中,我们探讨了使用 Gatling 对 HTTP 服务器进行负载测试。该工具让我们能够借助 GUI 根据定义的场景录制模拟。录制完成后,我们可以启动测试。测试报告将以 HTML 概览的形式呈现。
为了构建我们的示例,我们选择了使用Maven archetype。这有助于我们将Gatling集成到IDE中,并使其易于在版本控制系统中管理项目。
示例代码可以在GitHub项目中找到。