【译文】Gatling快速开始

喜欢而已 提交于 2020-01-22 12:08:40

快速开始

介绍

在这一章节我们将使用Gatling对简单web域名服务器做性能测试和给你介绍基础的DSL语法。

安装

请移步到安装章节挑选你需要的安装方式,建议非开发者从bundle开始安装。

关于文本编码

Gatling默认采用UTF-8编码,如果你想用另一个,你可以做:

  1. 使用录制器时选择正确的编码
  2. 在gatling.conf文件中配置正确的编码,它将用于编译脚本,构建请求和响应
  3. 确保文本编码正确配置为匹配
关于文本Scala

使用Scala编写Gatling场景脚本,但不要恐慌,你可以在不太了解Scala的情况下使用Gatling里面的所有基本函数,在大多数脚本中,DSL将满足你的需求,并且你可以构建你的场景。
如果你对scala感兴趣的话,我们推荐你去看twitter教程

备注
如果你已经阅读过本文章,也可以轻松的加入我们的谷歌讨论组一起讨论寻求帮助。

测试用例

本章节将指导你完成大部分的HTTP特性。你将学习模拟,场景,填充,录制,循环等。

测试中的应用程序

在本教程中,我们将使用一个命名为Computer-Database的应用程序部署在URL:http://computer-database.gatling.io。
此应用程序是用于管理电脑模型的简单CRUD应用程序,并且是2.3版本之前的playframework的一个示例。

场景

测试此应用程序的性能,我们将创建一些场景描述用户流浪真实发生的事情
下面是我们认为一个真实用户将如何操作这个应用程序

  • 一个用户到达应用程序
  • 用户搜索‘macbook’
  • 用户打开一个相关的模型
  • 用户返回主页
  • 用户遍历页面
  • 用户创建一个新模型

基础

使用录制器

为了简化场景的创建,我们将使用录制器,这是Gatling提供的一个工具,它允许您在web应用上的记录操作,并将其导出为Gatling场景。
在本地bin脚本目录中启动此程序。

  • 在Unix/Linux:
$GATLING_HOME/bin/recorder.sh
  • 在Windows:
%GATLING_HOME%\bin\recorder.bat

一旦启动后,下面的GUI将允许您配置如何记录请求和响应。
使用以下选项设置

  • computerdatabase 包
  • 基本模拟名称
  • 跟随重定向选项
  • 自动跳转选项
  • 已选黑名单优先过滤策略
  • 黑名单中有*.css *.js *.ico
    配置完录制器之后,您只需要启动它并将您浏览器配置使用Gatling录制代理。

备注
关于更多录制和浏览器代理信息,请点击录制参考页面

录制场景

现在简单浏览应用

  1. 定位搜索标记
  2. 访问网站:http://computer-database.gatling.io
  3. 搜索macbook命名的模型
  4. 选择macbook pro
  5. 定位浏览器标记
  6. 返回主页面
  7. 在模型页面重复多次点击Next按钮
  8. 定位编辑标记
  9. 点击添加新计算机
  10. 填充表格
  11. 点击创建此计算机

尝试描述真实用户行为,不要一个页面马上跳转到另外一个界面,没有思考时间。这将是你的用户场景更接近用户真实场景。
当你完成了这个场景,点击录制界面上的停止按钮。
模拟将生成到Gatling安装文件夹user-files/simulations/computerdatabase中以BasicSimulation.scala名称命名。

Gatling场景说明

这里是生成的产出

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. 基础地址将被预先写到所有相对地址上
  6. 将与所有请求一起发送的公共请求头
  7. 场景定义
  8. 一个命名为request_1的http请求,这个名字将被显示到最终报告上
  9. 这个url请求目标为GET方法
  10. 一些暂停/思考时间
  11. 其中一个设置将在此模拟中启动的场景
  12. 声明向名为scn的方案注入一个用户
  13. 附加上面声明的http配置

运行Gatling

启动本地bin目录下的第二个脚本:

  • Linux/Unix
$GATLING_HOME/bin/gatling.sh
  • Windows
%GATLING_HOME%\bin\gatling.bat

你稍后看见一个场景示例菜单

Choose a simulation number:
   [0] computerdatabase.BasicSimulation

当场景执行完成,控制将显示HTML报告链接

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!