quick start

快速入门

学习 Gatling 的概念,使用录制器创建可运行的 Gatling 仿真。

介绍

在这一部分,我们将使用 Gatling 进行负载测试一个简单的云托管的 Web 服务器,并向您介绍 DSL(领域特定语言)的基本要素。

选择合适的语言

Gatling 提供了两种主要的 DSL:

  1. 自Gatling 3.7版本引入的Java DSL,也可在Kotlin中使用。
  2. 最初的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。

场景

为了测试该应用程序的性能,我们将创建代表用户在导航应用程序时真正发生的场景。

这是我们认为真实用户在应用程序中可能会执行的操作:

  1. 用户进入应用程序。
  2. 用户搜索 ‘macbook’。
  3. 用户打开其中一个相关型号。
  4. 用户返回首页。
  5. 用户浏览页面。
  6. 用户创建一个新型号。

基础知识

使用录制器

为了简化场景的创建,我们将使用 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”

录制场景

现在,简单地浏览该应用程序:

  1. 输入 ‘Search’ 标签。
  2. 转到网站:http://computer-database.gatling.io。
  3. 搜索名字中带有 ‘macbook’ 的型号。
  4. 选择 ‘Macbook pro’。
  5. 输入 ‘Browse’ 标签。
  6. 返回到首页。
  7. 通过单击“下一页”按钮,多次遍历模型页面。
  8. 输入 ‘Edit’ 标签。
  9. 单击“添加新计算机”。
  10. 填写表单。
  11. 单击“创建此计算机”。

尽量像真实用户一样行动,不要立即从一个页面跳转到另一个页面而不花时间阅读。这将使您的场景更接近真实用户的行为。

当完成场景演练时,在录制器界面上单击“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 生成的仿真场景的源代码,下面是它的主要部分的解释:

  1. 可选包:

    • 这是用于组织代码的可选包声明。
  2. 所需导入:

    • 这是一些必需的导入语句,引入了 Gatling 的相关类和方法。
  3. 类声明:

    • 这里声明了一个类,注意它扩展了 Simulation 类。Simulation 是 Gatling 中用于定义性能测试场景的基类。
  4. HTTP请求的通用配置:

    • 这一部分包含了所有 HTTP 请求共用的配置,如基本 URL、HTTP 头等。
  5. baseUrl:

    • 定义了一个将被添加到所有相对 URL 前面的基础 URL。
  6. 通用的 HTTP 头:

    • 这里定义了将随所有请求一起发送的通用 HTTP 头。
  7. 场景定义:

    • 这里开始了测试场景的定义。
  8. HTTP 请求:

    • 定义了一个名为 “request_1” 的 HTTP 请求,使用 GET 方法,指定了请求的 URL。
  9. 暂停/思考时间:

    • 使用 pause 方法添加了一些暂停/思考时间。在 Gatling 中,时间的单位默认为秒。
  10. 场景设置:

    • 这部分设置了将在此仿真中启动的场景。
  11. 注入用户:

    • 使用 inject 方法声明将注入一个名为 “scn” 的场景中的单个用户。
  12. 附加 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 报告的链接。