iT邦幫忙

0

鼠年全馬鐵人挑戰 WEEK 34:負載性能測試 - Gatling (上)

           Photo on gatling.io


前言

前幾週小弟介紹了一款負載性能的測試工具 JMeter
如果還沒看過的大哥大姐 可以在參考下方連結
鼠年全馬鐵人挑戰 WEEK 29:負載性能測試 - JMeter (上)
鼠年全馬鐵人挑戰 WEEK 30:負載性能測試 - JMeter (下)

而這週小弟想要介紹另一款負載性能測試工具 Gatling
Gatling 在負載測試工具中也是數一數二的
既然都介紹了 JMeter 當然也不能錯過這週的內容~


安裝 Gatling

執行 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 resource
    • Automatic Referers:是否自動計算 http header 裡的 refer 字段
    • Remove cache headers:是否清除 header 裡的緩存
    • Use Class Name as request prefix:是否將 Class Name 作為請求名的前綴
    • Save & check response bodies:是否儲存並檢查返回的 body
  • Output
    儲存產生腳本的路徑位置與儲存格式
  • Filters
    透過正規表示式來記錄請求名單
    例如:想記錄任何 CSS 文件,則可以在名單部分中添加 .*\\.css
    • 白名單:只獲取白名單中指定的資源
    • 黑名單:獲取除了黑名單指定的資源,可以點擊右下角的 No static resources 排除所有的靜態資源

使用 Gatling recorder

透過 Gatling Recorder 的 GUI 操作,可以協助快速的產生腳本
因次無論使用何種模式 (HTTP Proxy/HAR Converter) 都可完成目的

但是因為 HTTP Proxy 使用上的限制較 HAR Converter 多且複雜
不但有安全的疑慮,也會有瀏覽器不支援的情況
因此這邊小弟將使用 HAR Converter 的模式來進行操作

獲取 HAR 檔案

  1. 開啟測試網頁 (https://www.google.com/)
  2. 開啟開發人員工具視窗 有下列四種方式
    • 畫面空白處點擊右鍵選擇檢查
    • 點擊右上角選單更多工具中的開發人員工具
    • 使用快捷鍵:Windows: control+shift+i Mac:option+command+i
    • 使用快捷鍵:F12
  3. 切換 tab 至 Network 並清除現有 request
  4. 勾選 Preserve log 來保留錄製期間的所有 Log
  5. 進行網頁測試的操作,結束後將 log 的內容存成 har 的文件檔案

    選擇任何一個 request 點擊右鍵選擇 Save all as HAR with content

  6. 最後回到 Gatling recorder 的 GUI 介面
    1. Recorder mode 選擇 HAR Converter (Http Archive 轉換器)
    2. Http Archive (HAR) Import 選擇剛剛存檔的 HAR Converter 檔案路徑
    3. 點擊右下角的 Start 按鈕,將內容轉換成 Scala 腳本
  7. 進入 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 的方法

因為小弟也是新手使用的分享文
所以介紹的內容可能有遺漏或是錯誤,還請各位大哥大姐提點
小弟將繼續往下週邁進。 ─=≡Σ((( つ•̀ω•́)つ


參考文獻

官方網站 (載點)


尚未有邦友留言

立即登入留言