鼠年全马铁人挑战 WEEK 34:负载性能测试 - Gatling (上)

           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/)开启开发人员工具视窗 有下列四种方式
画面空白处点击右键选择检查
点击右上角选单的更多工具中的开发人员工具
使用快捷键:Windows: control+shift+i Mac:option+command+i使用快捷键:F12
切换 tab 至 Network 并清除现有 request
勾选 Preserve log 来保留录製期间的所有 Log
进行网页测试的操作,结束后将 log 的内容存成 har 的文件档案

选择任何一个 request 点击右键选择 Save all as HAR with content

最后回到 Gatling recorder 的 GUI 介面
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

这时候输入 0RecordedSimulation 範例测试
以及执行说明 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

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章