本篇文章翻译 gatling 官方快速入门文档,在本中将使用 Gatling 对一个简单的云托管 Web 服务器进行负载测试,并介绍 DSL 的基本要素。
请检查安装部分以选择符合您需要的设置。建议非开发人员从捆绑软件设置开始。
加特林的默认编码为 UTF-8。如果要使用另一种,则必须:
该页面将指导您完成大多数 Gatling HTTP 功能。您将了解 simulations、scenarios、feeders、 recorder、loops 等。
在本教程中,我们将使用一个部署在 URL 上的名为 Computer-Database 的应用程序:
http://computer-database.gatling.io
该应用程序是用于管理计算机模型的简单 CRUD 应用程序,并且是 2.3 之前版本的 Play Framework 的示例。
为了测试该应用程序的性能,我们将创建代表用户导航时实际发生情况的方案。
这是我们认为真正的用户将对应用程序执行的操作:
该工具通过位于 bin 目录中的脚本启动:
在 Linux / Unix 上:
$GATLING_HOME/bin/recorder.sh
在 Windows 上:
%GATLING_HOME%\bin\recorder.bat
启动后,以下 GUI 可让您配置如何记录请求和响应。
使用以下选项进行设置:
http://computer-database.gatling.io
尝试以实际用户的身份行事尝试阅读页面内容,不要立即从一页跳到另一页。这将使您的方案更接近真实用户的行为。
完成场景录制后,点击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
}
这段代码是什么意思?
request_1
,此名称将显示在最终报告中启动位于 bin 目录中的第二个脚本:
在 Linux / Unix 上:
$GATLING_HOME/bin/gatling.sh
在 Windows 上:
%GATLING_HOME%\bin\gatling.bat
当启动后应该看到带有场景信息的任务菜单:
Choose a simulation number:
[0] computerdatabase.BasicSimulation
模拟用户请求完成后,控制台将显示指向 HTML 报告的链接。