Locust 1.X 系列教程:目錄大綱(QQ 交流群:1044725943)


教程版本

基於版本:1.0.3
最近更新:2020年07月

目錄大綱

01、快速開始


Locust 系列教程:目錄大綱
Locust 簡介、環境、安裝
Locust 快速開始:一個簡單的登錄、頁面瀏覽腳本

02、腳本開發實現


Locust 腳本開發入門(1)
Locust 腳本開發入門(2)
Locust 腳本開發入門(3)
Locust 腳本開發入門(4)

03、測試場景執行


Locust 場景執行:Web UI 中執行
Locust 場景執行:命令行中執行
Locust 場景執行:分布式執行
Locust 場景增強:
Locust 場景增強:

04、結果查看&增強


Locust 結果增強:
Locust 結果增強:
Locust 結果增強:

05、進階應用

Locust 進階應用:WebSocket 協議測試
Locust 進階應用:消息隊列中間件壓測(RabbitMQ)
Locust 進階應用:解決圖片驗證碼


06、常見問題 & 實踐

Locust 常見問題

關於教程

0、什么是 Locust

無需多講,引用官網文案

Define user behaviour with Python code, and swarm your system with millions of simultaneous users.

—— 用Python代碼定義用戶行為,讓數百萬並發用戶涌入您的系統。

1、為什么百度找到的大部分 Locust 教程(包括B站視頻)都不適用了?

Locust 自從1.X 版本號開始有了大量重要變更(breaking changes),目前百度前面幾頁的結果和教程基本上都是基於0.14.6之前,甚至大量基於0.10編寫的,甚至還有發布時間為上個月的0.10教程,萌新如果覺得 Locust 啃不下去是自然的。

2、官方在 1.0 以后的重要變更包括哪些?

包括了 類的重命名、任務規划策略的豐富、啟動傳參:

  • 類的重命名,比如:Locust 重命名為 user,HttpLocust 重命名為 HttpUser 等
  • 啟動參數的變更,比如:-c 修改為 -u,--no-web 修改為 --headless 等
  • 多個環境變量的重命名,比如 LOCUST_MASTER 變更為 LOCUST_MODE_MASTER 等
  • 可以直接在 user 類下面直接使用 @task 進行任務規划
  • 增加了新的 裝飾器 @tags 進行任務規划
  • ……

(這意味着這次大版本升級,之前的腳本、啟動命令都必須做出一些修改)

3、Locust 目前仍然是我最推薦測試工程師學習的壓測框架(為什么不是 Jmeter)

下面純粹從學習成本和收益的角度來講幾個個人觀點:

  • 首先,它的腳本語言使用了 python,雖然我也不明白為什么 python 如今在測試群體里面這么火,也許是主流的測試框架基本都支持 python?如果你已經簡單了解過 requests 庫,只要看幾個腳本 demo ,那 Locust (HTTP)腳本的開發幾乎就毫無難度。
  • 其次,Locust 不像 LoadRunner、Jmeter 這種壓測工具通過線程對應一個用戶/並發的方式產生負載,而是基於協程的 gevent 網絡庫(以協程+IO多路復用的方式),這就意味着,同樣配置的機器,你可以輕易創建遠超 Jmeter 所能創建的負載(LoadRunner 一個 Vuser 占用內存數M甚至數十MB,而 Jmeter 最高並發數受限於 JVM 大小),因此,你很少需要在需要高並發測試場景中花費額外時間去解決負載機資源不足的問題了。
  • 再其次,雖然我們日常壓測的大部分場景都是針對 HTTP 接口,但是隨着你對“壓測”這兩個字的理解加深,你會漸漸發現末端(指接口)的壓測只是整個壓測過程的冰山一角。如果需要對 WebSocket 做壓測,你要用 Jmeter 那套死板的插件嗎?如果需要做消息隊列中間件壓測呢?如果是數據庫中間件壓測呢?如果是RPC協議呢?如果是直播的推拉流呢?只能干等着插件出來嗎?但如果這時候你用的是 Locust,那你就能自行實現 Client 進而實現其壓測腳本!
  • 最后,(如果你不會 java 的話)你不覺得在 Jmeter UI界面上來來回回拖放的腳本“開發”方式十分無趣嗎?你是否體會過一個壓測腳本的實現居然受限於 UI 界面的無奈?在 Jmeter 上只要是稍微復雜的業務邏輯如果沒有邏輯組件,那就得依賴代碼實現,難道你還會專門去學 beanshell?

當然,為了學習性能測試而去學習 Jmeter 也並沒有任何毛病,我本人從 09年開始用 Jmeter 到今天也沒覺得它不稱手,最大的問題其實是遇到問題沒有 Plan B。

4、學習過程中遇到問題,如何解決?

  • 在頁面下方提問,我盡快以博文方式闡述清楚進行答復
  • 交流 QQ 群(性能與自動化交流):1044725943


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM