接口测试 Gatling 文档翻译 (一)-QuickStart

hobbs · 2015年11月14日 · 583 次阅读
本帖已被设为精华帖!

英文文档地址:
http://gatling.io/docs/2.1.7/quickstart.html

Quickstart

简介

在本节中,我们将使用Gatling测试一个简单的云托管的Web服务器,并会向你介绍DSL的基本要素。

获取软件

你可以从这里获取Gatling软件包:

安装

解压下载包到你选择的文件夹

注意:
Windows用户:我们建议不要将gatling放在Programs文件夹,因为这可能会引起权限问题。

为了运行Gatling,你需要安装一个JDK。Gatling需要至少JDK7u6,但我们建议使用最新版本。
关于安装和操作系统(OS)调试的所有细节,请参阅Operations部分。

注意:
Gatling 启动脚本和Gatling maven 插件能识别JAVA_HOME环境变量。OS,比如OSX,有自己的方式获取运行的Java的版本,所以你实际运行的Java版本可能和 Java -version 显示的Java版本不同。如果你得到奇怪的错误,如不支持major.minor版本51.0,你应当运行JDK7,并且可能需要明确设置JAVA_HOME。

关于编码

Gatling的默认编码是UTF-8。如果你想使用其他编码,你必须:

  • 在使用Recorder时选择正确的编码
  • 在gatling.conf配置文件中设置正确的编码。它将用于编译simulations,构建你的requests和responses。
  • 确保正确设置了你的文本编辑器的编码。

关于Scala

Gatling的simulation脚本使用Scala语言编写。但是不要担心,在对Scala不是很了解的情况下你仍可以使用 Gatling 的所有基本功能。在大多数情况下,DSL将满足大部分的需求,你可以使用DSL建立自己的scenarios。
如果你有兴趣了解更多关于Scala的内容,我们建议你看看Twitter上的Scala学校

备注:
在你阅读本文档时,我们也欢迎你加入我们的 Google Group 并在上面寻求帮助。

测试用例

下面的内容将使你了解大部分的Gatling HTTP 特性。你将了解 simulations,scenarios,feeders,recorder,loops等。

Application under Test

在本教程中,我们将使用一个部署在http://computer-database.gatling.io 上名叫 Computer-Database的应用程序
此应用程序是用于管理计算机种类的一个简单的CRUD应用程序,并且是2.3版本之前的演示框架的实例。
你也可以在本地计算机上运行它:下载并使用它吧! 2.2.x版的包

Scenario

为了测试这个应用程序的性能,我们将创建一些具有代表性的用户使用场景。
下面是一些我们认为的真是用户使用此应用程序的场景

  • 用户访问Application.
  • 用户搜索'macbook'.
  • 用户打开搜索到的记录中的一个。
  • 用户回到主页。
  • 用户前后翻页。
  • 用户创建一条新记录。

基本使用

使用Recorder

为了便于创建场景,我们将使用Recorder,一个Gatling提供的可以用来录制操作步骤并导出为Gatling scenario 的工具。
该工具通过存放于bin目录下的一个脚本启动:

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

一旦启动,下图的GUI界面将使你能够配置requests和responses的录制方式。
使用以下可选项来启动Recorder:

  • computerdatabase ----package名
  • BasicSimulation ----name
  • Follow Redirects? ----选中
  • Automatic Referers? ----选中
  • Black list first filter strategy ----选中
  • Black list中包含 ..css, ..js and .*.ico


配置Recorder后,你所要做的就是启动Recorder并配置你的浏览器使用Gatling Recorder的代理。

备注
有关Recorder和浏览器配置的详细信息,请查看Recorder的参考页

录制scenario

现在来简单的操作一下application:
1.访问: http://computer-database.gatling.io
2.查找名字中包含“macbook”的记录.
3.选择 ‘Macbook pro’.
4.回到主页.
5.通过“上一页”,“下一页”来访问多个页面.
6.点击按钮 Add new computer.
7.填写表单.
8.点击 Create this computer.

尽量像一个真实用户那样去操作,不要立即从一个页面跳转到另一个页面,要留一些thinking time 和read time。
这样可以使你的场景更加贴近真实的用户行为。
当你完成场景操作时,在Recorder界面上点击 Stop 按钮
录制的Simulation将会存放在你Gatling安装目录下的 user-files/simulations/computerdatabase 目录下,文件名为BasicSimulation.scala。
####Gatling scenario 详解
下面是生成的输出:

package computerdatabase // 1

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

class BasicSimulation extends Simulation { // 3

  val httpConf = 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(httpConf) // 13
}

What does it mean?

  1. 可选包.
  2. 必要的需要import的包.
  3. class 声明,继承自 Simulation.
  4. 所有HTTP请求的通用配置.
  5. 将被前置到所有相对URL的的baseUrl.
  6. 通用HTTP头信息,它将会被用于所有的requests请求中.
  7. scenario 定义.
  8. 一个名叫 request_1的HTTP请求,请求名字将会显示在最终的报告中.
  9. 以 GET 方法请求目标 url.
  10. 一些 pause/think time.
  11. 设置将要在这个 Simulation 中启动的 scenarios.
  12. 在名叫 scn 的 scenario 中注入一个用户.
  13. 应用上面声明的 HTTP 配置.

备注:
val 是定义一个常量的关键字。变量类型没有定义,由Scala编译器确定.
时间单位默认为 seconds(秒),如:pause(5)等同于 pause(5 seconds).
关于Simulation 结构的详细信息,请查看 Simulation 参考页面.

运行Gatling

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

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

你应当看到一个simulation 示例的菜单 :
Choose a simulation number:

[0] computerdatabase.BasicSimulation

当 simulation 执行完成时,控制台会显示一个HTML报告的链接。
备注:
如果Gatling没有像预期的那样工作,请查看 FAQ 或者 在Google Group 上提问。

了解更多

如果你想要了解更多,请查看 Advanced Tutorial.

共收到 0 条回复 时间 点赞
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册