quick start
快速入门
学习 Gatling 的概念,使用录制器创建可运行的 Gatling 仿真。
介绍
在这一部分,我们将使用 Gatling 进行负载测试一个简单的云托管的 Web 服务器,并向您介绍 DSL(领域特定语言)的基本要素。
选择合适的语言
Gatling 提供了两种主要的 DSL:
- 自Gatling 3.7版本引入的Java DSL,也可在Kotlin中使用。
- 最初的Scala DSL。
在选择使用 Gatling 时,我们建议遵循以下规则:
- 如果目标 Gatling 用户是 Scala 开发者,则使用 Scala。
- 如果他们是 Kotlin 开发者,则使用 Kotlin。
- 否则,使用 Java。
Java 在计算机科学课程中被广泛教授,编译时需要较少的 CPU,并且在 Maven 或 Gradle 中更容易配置。
安装
请查看安装部分,选择符合您需求的设置。建议非开发人员从捆绑设置开始。在本教程中,我们将展示与捆绑设置一起使用的命令。
编码
Gatling 的默认编码是 UTF-8。如果您想使用其他编码,您需要:
- 在使用录制器时选择适当的编码。
- 在 gatling.conf 文件中配置适当的编码。它将用于编译您的仿真、构建您的请求和响应。
- 确保您的文本编辑器编码已正确配置以匹配。
测试用例
此页面将引导您了解大多数 Gatling HTTP 功能。您将了解有关仿真、场景、数据源、录制器、循环等的内容。
示例应用程序
在本教程中,我们将使用一个名为 “Computer-Database” 的应用程序,部署在以下 URL:http://computer-database.gatling.io。
场景
为了测试该应用程序的性能,我们将创建代表用户在导航应用程序时真正发生的场景。
这是我们认为真实用户在应用程序中可能会执行的操作:
- 用户进入应用程序。
- 用户搜索 ‘macbook’。
- 用户打开其中一个相关型号。
- 用户返回首页。
- 用户浏览页面。
- 用户创建一个新型号。
基础知识
使用录制器
为了简化场景的创建,我们将使用 Recorder,这是 Gatling 提供的一种工具,允许您记录对 Web 应用程序的操作并将其导出为 Gatling 场景。
可以使用位于 bin 目录中的脚本启动此工具:
在 Linux/Unix 上:
$GATLING_HOME/bin/recorder.sh
在 Windows 上:
%GATLING_HOME%\bin\recorder.bat
一旦启动,以下 GUI 允许您配置如何记录请求和响应。
使用以下选项进行设置:
- Recorder Mode 设置为 HTTP Proxy
- computerdatabase 包
- BasicSimulation 名称
- Follow Redirects? 勾选
- Infer HTML resources? 勾选
- Automatic Referers? 勾选
- Remove cache headers? 勾选
- No static resources 点击
- 选择所需的格式。教程将假定为 “Java 8”
录制场景
现在,简单地浏览该应用程序:
- 输入 ‘Search’ 标签。
- 转到网站:http://computer-database.gatling.io。
- 搜索名字中带有 ‘macbook’ 的型号。
- 选择 ‘Macbook pro’。
- 输入 ‘Browse’ 标签。
- 返回到首页。
- 通过单击“下一页”按钮,多次遍历模型页面。
- 输入 ‘Edit’ 标签。
- 单击“添加新计算机”。
- 填写表单。
- 单击“创建此计算机”。
尽量像真实用户一样行动,不要立即从一个页面跳转到另一个页面而不花时间阅读。这将使您的场景更接近真实用户的行为。
当完成场景演练时,在录制器界面上单击“Stop”。
生成的仿真将保存在 Gatling 安装的 user-files/simulations/computerdatabase 文件夹下,文件名为 BasicSimulation.java。
Gatling 场景解释
以下是生成的输出:
//package computerdatabase; // 1// 2import io.gatling.javaapi.core.*;import io.gatling.javaapi.http.*;import static io.gatling.javaapi.core.CoreDsl.*;import static io.gatling.javaapi.http.HttpDsl.*;public class BasicSimulationJava extends Simulation { // 3HttpProtocolBuilder httpProtocol = http // 4.baseUrl("http://computer-database.gatling.io") // 5.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 6.doNotTrackHeader("1").acceptLanguageHeader("en-US,en;q=0.5").acceptEncodingHeader("gzip, deflate").userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0");ScenarioBuilder scn = scenario("BasicSimulation") // 7.exec(http("request_1") // 8.get("/")) // 9.pause(5); // 10{setUp( // 11scn.injectOpen(atOnceUsers(1)) // 12).protocols(httpProtocol); // 13}}
这段代码是 Gatling 生成的仿真场景的源代码,下面是它的主要部分的解释:
可选包:
- 这是用于组织代码的可选包声明。
所需导入:
- 这是一些必需的导入语句,引入了 Gatling 的相关类和方法。
类声明:
- 这里声明了一个类,注意它扩展了 Simulation 类。Simulation 是 Gatling 中用于定义性能测试场景的基类。
HTTP请求的通用配置:
- 这一部分包含了所有 HTTP 请求共用的配置,如基本 URL、HTTP 头等。
baseUrl:
- 定义了一个将被添加到所有相对 URL 前面的基础 URL。
通用的 HTTP 头:
- 这里定义了将随所有请求一起发送的通用 HTTP 头。
场景定义:
- 这里开始了测试场景的定义。
HTTP 请求:
- 定义了一个名为 “request_1” 的 HTTP 请求,使用 GET 方法,指定了请求的 URL。
暂停/思考时间:
- 使用
pause
方法添加了一些暂停/思考时间。在 Gatling 中,时间的单位默认为秒。
- 使用
场景设置:
- 这部分设置了将在此仿真中启动的场景。
注入用户:
- 使用
inject
方法声明将注入一个名为 “scn” 的场景中的单个用户。
- 使用
附加 HTTP 配置:
- 使用
protocols
方法将上面声明的 HTTP 配置附加到场景中。
- 使用
这个代码片段定义了一个简单的 Gatling 场景,包括一个基本的 HTTP 请求和一些暂停时间。
整个场景将模拟用户在应用程序中的一些典型操作。详细了解 Gatling Simulation 结构的更多信息,请查阅 Simulation 参考页面。
运行 Gatling
启动位于 bin 目录中的第二个脚本:
在 Linux/Unix 上:
$GATLING_HOME/bin/gatling.sh
在 Windows 上:
%GATLING_HOME%\bin\gatling.bat
您应该看到一个带有以下选择的菜单:
Do you want to run the simulation locally, on Gatling Enterprise, or just package it?Type the number corresponding to your choice and press enter[0] [1] Run the Simulation locally[2] Run the Simulation on Gatling Enterprise Cloud[3] Package the Simulation for Gatling Enterprise
输入 1
然后按 Enter。
接下来,您将看到一个仿真示例的菜单:
Choose a simulation number:[0] computerdatabase.BasicSimulation[1] computerdatabase.advanced.AdvancedSimulationStep01[2] computerdatabase.advanced.AdvancedSimulationStep02[3] computerdatabase.advanced.AdvancedSimulationStep03[4] computerdatabase.advanced.AdvancedSimulationStep04[5] computerdatabase.advanced.AdvancedSimulationStep05
输入 0
然后按 Enter。在 Gatling 要求输入运行描述时,按 Enter。
当仿真完成时,控制台将显示指向 HTML 报告的链接。