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创建之前,为类的groupId、artifactId、version和package名称选择合适的值。
最后,将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. 录制场景
现在一切都已配置好,我们可以录制我们上面定义的场景。步骤如下:
- 通过点击“开始”按钮开始录制
- 访问网站:http://computer-database.gatling.io
- 搜索名称包含'amstrad'的模型
- 选择'Amstrad CPC 6128'
- 返回主页
- 通过点击“下一个”按钮多次遍历模型页面
- 点击“停止并保存”按钮
模拟将在配置期间指定的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项目中找到。