Photo on gatling.io
前言
前几週小弟介绍了一款负载性能的测试工具 JMeter
如果还没看过的大哥大姐 可以在参考下方连结
鼠年全马铁人挑战 WEEK 29:负载性能测试 - JMeter (上)
鼠年全马铁人挑战 WEEK 30:负载性能测试 - JMeter (下)
而这週小弟想要介绍另一款负载性能测试工具 Gatling
Gatling 在负载测试工具中也是数一数二的
既然都介绍了 JMeter 当然也不能错过这週的内容~
安装 Gatling
安装 Java Developer Kit (JDK)
JDK 的版本至少要 8 以上
可以透过指令$ java -version
来查看 java 版本Java SE-下载|Oracle技术网|甲骨文
可以依照自己的作业系统,安装想要的版本
小弟是直接装最新版的 Java SE 14
安装 Gatling
前往 Gatling 的官方网站进行安装
Start testing with Gatling! – Gatling Open-Source Load Testing下载完成后点选档案将其解压缩
就完成安装啰~ (就是这么的简单)
执行 Gatling 範例脚本
安装下来的 Gatling 中包含了一些範例测试档
我们可以透过这些範例测试档 来快速测试一下 Gatlig 的执行方式与结果
透过指令来执行 bin 底下的 gatling 档案
进入 gatling 的 bin 资料夹层$ cd gatling-charts-highcharts-bundle-<version>/bin && sh gatling.sh
执行后会出现包含 Gatling 的範例测试
Choose a simulation number: [0] computerdatabase.BasicSimulation [1] computerdatabase.advanced.AdvancedSimulationStep01 [2] computerdatabase.advanced.AdvancedSimulationStep02 [3] computerdatabase.advanced.AdvancedSimulationStep03 [4] computerdatabase.advanced.AdvancedSimulationStep04 [5] computerdatabase.advanced.AdvancedSimulationStep05
这时候输入 0
的基本範例测试
以及执行说明 Run Gatling demo test
(也可以不输入)
Gatling 範例测试执行完成后 会多一个 results 的资料夹
刚刚完成的範例测试报告也会存在该资料夹底下
开启 Gatling recorder
执行完 Gatling 的範例测试后确定没问题
就可以来看看 Gatling 的 recorder 功能了
透过指令来开启 Gatling 的 GUI 录製介面$ cd gatling-charts-highcharts-bundle-<version>/bin && sh recorder.sh
完成开启后 就可以轻鬆的透过 GUI 介面来操作设定了
介绍 Gatling recorder
先简单的介绍 GUI 介面上的每一个区块所做的事情吧~
Recorder mode右上角的 Recorder mode 分为两种模式 可以透过下拉式选单做选择HTTP Proxy (HTTP 代理模式)HAR Converter (Http Archive 转换器)Network/Http Archive (HAR) Import
根据不同的 Recorder mode,有相对应的设置内容Network:HTTP Proxy 的设置内容Http Archive (HAR) Import:HAR Converter 的设置内容Simulation Information
对后续产生脚本的设置内容Package: 产生脚本所在的 Package 名称,也就是父资料夹名称Class Name: 产生脚本的 Class Name,也就是脚本名称Follow Redirects:是否随着网页重定向Infer HTML resources:获取在下方 Filters 中的 html resourceAutomatic Referers:是否自动计算 http header 里的 refer 字段Remove cache headers:是否清除 header 里的缓存Use Class Name as request prefix:是否将 Class Name 作为请求名的前缀Save & check response bodies:是否储存并检查返回的 bodyOutput
储存产生脚本的路径位置与储存格式Filters
透过正规表示式来记录请求名单
例如:想记录任何 CSS 文件,则可以在名单部分中添加
.*\\.css
白名单:只获取白名单中指定的资源黑名单:获取除了黑名单指定的资源,可以点击右下角的 No static resources 排除所有的静态资源使用 Gatling recorder
透过 Gatling Recorder 的 GUI 操作,可以协助快速的产生脚本
因次无论使用何种模式 (HTTP Proxy/HAR Converter) 都可完成目的
但是因为 HTTP Proxy 使用上的限制较 HAR Converter 多且複杂
不但有安全的疑虑,也会有浏览器不支援的情况
因此这边小弟将使用 HAR Converter 的模式来进行操作
获取 HAR 档案
开启测试网页 (https://www.google.com/)开启开发人员工具视窗 有下列四种方式画面空白处点击右键选择检查切换 tab 至 Network 并清除现有 request点击右上角选单的更多工具中的开发人员工具
使用快捷键:Windows:
control
+shift
+i
Mac:option
+command
+i
使用快捷键:F12


最后回到 Gatling recorder 的 GUI 介面选择任何一个 request 点击右键选择 Save all as HAR with content
Recorder mode 选择 HAR Converter (Http Archive 转换器)Http Archive (HAR) Import 选择刚刚存档的 HAR Converter 档案路径点击右下角的 Start 按钮,将内容转换成 Scala 脚本进入 Output 设置的 Siumlations 资料夹位置
查看 Class Name 名为 RecordedSimulation 的 scala 档案
执行 Gatling 脚本
接着只要在执行一次上面说过的指令来执行脚本 就大功告成啰~
进入 gatling 的 bin 资料夹层执行 gatling$ cd gatling-charts-highcharts-bundle-<version>/bin && sh gatling.sh
执行后会出现包含 Gatling 的範例测试
也会出现刚刚成功转档的 scala 档案
Choose a simulation number: [0] RecordedSimulation [1] computerdatabase.BasicSimulation [2] computerdatabase.advanced.AdvancedSimulationStep01 [3] computerdatabase.advanced.AdvancedSimulationStep02 [4] computerdatabase.advanced.AdvancedSimulationStep03 [5] computerdatabase.advanced.AdvancedSimulationStep04 [6] computerdatabase.advanced.AdvancedSimulationStep05
这时候输入 0
的 RecordedSimulation
範例测试
以及执行说明 Run RecordedSimulation demo test
(也可以不输入)
执行完成后进入 results 的资料夹 查看刚刚完成的测试报告
结尾
以上是这週的 Gatling 内容
主要分享了安装与执行範例测试
以及 Recorder GUI 的 HAR 转 Scala 的方法
因为小弟也是新手使用的分享文
所以介绍的内容可能有遗漏或是错误,还请各位大哥大姐提点
小弟将继续往下週迈进。 ─=≡Σ((( つ•̀ω•́)つ
参考文献
官方网站 (载点)
Java SE - Downloads | Oracle Technology Network | OracleGatling Open-Source Load Testing – For DevOps and CI/CDStart testing with Gatling! – Gatling Open-Source Load Testing