快速开始
介绍
在这一章节我们将使用Gatling对简单web域名服务器做性能测试和给你介绍基础的DSL语法。
安装
请移步到安装章节挑选你需要的安装方式,建议非开发者从bundle开始安装。
关于文本编码
Gatling默认采用UTF-8编码,如果你想用另一个,你可以做:
- 使用录制器时选择正确的编码
- 在gatling.conf文件中配置正确的编码,它将用于编译脚本,构建请求和响应
- 确保文本编码正确配置为匹配
关于文本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录制代理。
备注
关于更多录制和浏览器代理信息,请点击录制参考页面
录制场景
现在简单浏览应用
- 定位搜索标记
- 访问网站:http://computer-database.gatling.io
- 搜索macbook命名的模型
- 选择macbook pro
- 定位浏览器标记
- 返回主页面
- 在模型页面重复多次点击Next按钮
- 定位编辑标记
- 点击添加新计算机
- 填充表格
- 点击创建此计算机
尝试描述真实用户行为,不要一个页面马上跳转到另外一个界面,没有思考时间。这将是你的用户场景更接近用户真实场景。
当你完成了这个场景,点击录制界面上的停止按钮。
模拟将生成到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
}
这是什么意思?
- 可选择的包
- 需要引入的
- 类定义,注意它继承Simulation
- http请求全局配置
- 基础地址将被预先写到所有相对地址上
- 将与所有请求一起发送的公共请求头
- 场景定义
- 一个命名为request_1的http请求,这个名字将被显示到最终报告上
- 这个url请求目标为GET方法
- 一些暂停/思考时间
- 其中一个设置将在此模拟中启动的场景
- 声明向名为scn的方案注入一个用户
- 附加上面声明的http配置
运行Gatling
启动本地bin目录下的第二个脚本:
- Linux/Unix
$GATLING_HOME/bin/gatling.sh
- Windows
%GATLING_HOME%\bin\gatling.bat
你稍后看见一个场景示例菜单
Choose a simulation number:
[0] computerdatabase.BasicSimulation
当场景执行完成,控制将显示HTML报告链接
来源:CSDN
作者:EverThinks
链接:https://blog.csdn.net/bhlice/article/details/94859376