性能测试工具 Gatling 学习笔记 (二)---快速入门

ZengTester · 2020年02月07日 · 1621 次阅读

简介

本篇文章翻译 gatling 官方快速入门文档,在本中将使用 Gatling 对一个简单的云托管 Web 服务器进行负载测试,并介绍 DSL 的基本要素。

安装

请检查安装部分以选择符合您需要的设置。建议非开发人员从捆绑软件设置开始。

编码

加特林的默认编码为 UTF-8。如果要使用另一种,则必须:

  • 在使用记录器时选择正确的编码
  • 在 gatling.conf 文件中配置正确的编码。它将用于编译模拟,建立请求和响应。
  • 确保文本编辑器编码已正确配置为匹配。 ## 关于 Scala 的话 Gatling 模拟脚本是用 Scala 编写的,但不要惊慌!您可以在不了解 Scala 的情况下使用 gatling 的所有基本功能。在大多数情况下,DSL 将满足您的大部分需求,并且您将能够构建自己的方案。

测试用例

该页面将指导您完成大多数 Gatling HTTP 功能。您将了解 simulations、scenarios、feeders、 recorder、loops 等。

测试下应用

在本教程中,我们将使用一个部署在 URL 上的名为 Computer-Database 的应用程序:
http://computer-database.gatling.io

该应用程序是用于管理计算机模型的简单 CRUD 应用程序,并且是 2.3 之前版本的 Play Framework 的示例。

场景

为了测试该应用程序的性能,我们将创建代表用户导航时实际发生情况的方案。
这是我们认为真正的用户将对应用程序执行的操作:

  1. 用户到达 web 应用
  2. 用户搜索 “ macbook”
  3. 用户打开相关模型之一
  4. 用户返回首页
  5. 用户遍历页面
  6. 用户创建一个新模型 # 基础 ## 使用记录 为了简化方案的创建,我们将使用 Recording,这是 Gatling 随附的工具,可让您在 Web 应用程序上记录您的操作并将其导出为 Gatling 方案。

该工具通过位于 bin 目录中的脚本启动:

在 Linux / Unix 上:

$GATLING_HOME/bin/recorder.sh

在 Windows 上:

%GATLING_HOME%\bin\recorder.bat

启动后,以下 GUI 可让您配置如何记录请求和响应。

使用以下选项进行设置:

  • 计算机数据库依赖是否完全
  • 基础场景名称
  • 跟随重定向?已检查
  • 自动引荐?已检查
  • 已选择黑名单优先过滤策略
  • 黑名单过滤器是否有一下几个文件类型的 *.css, *.js 和 *.ico 配置记录器后,您要做的就是启动它并配置浏览器以使用 Gatling Recorder 的代理。 在这里插入图片描述 ## 录制场景 现在只需浏览访问我们的应用程序:
  • 输入 “Search” 标签按下回车。
  • 跳转到网站 http://computer-database.gatling.io
  • 搜索名称中带有 “ macbook” 的型号
  • 选择 “ Macbook pro”
  • 输入 “Browse” 回车确定
  • 返回到首页
  • 通过单击"next"按钮来多次遍历模型页面。
  • 输入 “Edit” 标签并回车
  • 单击添加新计算机
  • 填写 form 表格
  • 点击 "创建此计算机”

尝试以实际用户的身份行事尝试阅读页面内容,不要立即从一页跳到另一页。这将使您的方案更接近真实用户的行为。

完成场景录制后,点击Stop按钮在 “记录器” 界面中单击。

模拟将在 user-files/simulations/computerdatabase 您的 Gatling 安装文件夹中的名称下生成 BasicSimulation.scala。

加特林情景说明

这是产生的输出:

package computerdatabase // 1

import io.gatling.core.Predef._ // 2
import io.gatling.http.Predef._
import scala.concurrent.duration._

class BasicSimulation extends Simulation { // 3

  val 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")

  val scn = scenario("BasicSimulation") // 7
    .exec(http("request_1") // 8
      .get("/")) // 9
    .pause(5) // 10

  setUp( // 11
    scn.inject(atOnceUsers(1)) // 12
  ).protocols(httpProtocol) // 13
}

这段代码是什么意思?

  1. 所在的软件包
  2. 所需要的依赖包
  3. 声明类,继承 Simulation 类
  4. 此脚本所有 HTTP 请求的通用配置
  5. 请求的 url 的基础域名
  6. 将与所有请求一起发送的通用 HTTP 请求头
  7. scenario 的定义与命名
  8. 定义一个 HTTP 请求,命名为request_1,此名称将显示在最终报告中
  9. 往指定的 URL 发送一个 GET 请求
  10. 增加思考时间或者等待时间
  11. 在这里面设置具体的压测场景
  12. 声明将一个单一用户注入到名为 scn 的方案中
  13. 附加上面声明的 HTTP 配置。

运行加特林

启动位于 bin 目录中的第二个脚本:

在 Linux / Unix 上:

$GATLING_HOME/bin/gatling.sh

在 Windows 上:

%GATLING_HOME%\bin\gatling.bat

当启动后应该看到带有场景信息的任务菜单:

Choose a simulation number:
[0] computerdatabase.BasicSimulation
模拟用户请求完成后,控制台将显示指向 HTML 报告的链接。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册