英文文档地址:
http://gatling.io/docs/2.1.7/quickstart.html
在本节中,我们将使用 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。如果你想使用其他编码,你必须:
Gatling 的 simulation 脚本使用Scala语言编写。但是不要担心,在对 Scala 不是很了解的情况下你仍可以使用 Gatling 的所有基本功能。在大多数情况下,DSL 将满足大部分的需求,你可以使用 DSL 建立自己的 scenarios。
如果你有兴趣了解更多关于 Scala 的内容,我们建议你看看 Twitter 上的Scala 学校。
备注:
在你阅读本文档时,我们也欢迎你加入我们的 Google Group 并在上面寻求帮助。
下面的内容将使你了解大部分的 Gatling HTTP 特性。你将了解 simulations,scenarios,feeders,recorder,loops 等。
在本教程中,我们将使用一个部署在http://computer-database.gatling.io 上名叫 Computer-Database 的应用程序
此应用程序是用于管理计算机种类的一个简单的 CRUD 应用程序,并且是 2.3 版本之前的演示框架的实例。
你也可以在本地计算机上运行它:下载并使用它吧! 2.2.x 版的包
为了测试这个应用程序的性能,我们将创建一些具有代表性的用户使用场景。
下面是一些我们认为的真是用户使用此应用程序的场景
为了便于创建场景,我们将使用 Recorder,一个 Gatling 提供的可以用来录制操作步骤并导出为 Gatling scenario 的工具。
该工具通过存放于 bin 目录下的一个脚本启动:
一旦启动,下图的 GUI 界面将使你能够配置 requests 和 responses 的录制方式。
使用以下可选项来启动 Recorder:
配置 Recorder 后,你所要做的就是启动 Recorder 并配置你的浏览器使用 Gatling Recorder 的代理。
备注
有关 Recorder 和浏览器配置的详细信息,请查看Recorder 的参考页。
现在来简单的操作一下 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?
备注:
val 是定义一个常量的关键字。变量类型没有定义,由 Scala 编译器确定.
时间单位默认为 seconds(秒),如:pause(5) 等同于 pause(5 seconds).
关于 Simulation 结构的详细信息,请查看 Simulation 参考页面.
启动位于 bin 目录中的第二个脚本:
你应当看到一个 simulation 示例的菜单 :
Choose a simulation number:
[0] computerdatabase.BasicSimulation
当 simulation 执行完成时,控制台会显示一个 HTML 报告的链接。
备注:
如果 Gatling 没有像预期的那样工作,请查看 FAQ 或者 在Google Group 上提问。
如果你想要了解更多,请查看 Advanced Tutorial.