Locust 簡介及安裝使用

FisherMan發表於2020-05-18

之前一直在用 jmeter 進行效能測試,最近在進行 python 介面自動化測試的時候,思考有沒有結合 python 的效能測試工具呢?透過各種渠道,開始了 locust 的初探,以下見解,僅供參考~~

  • 1.簡介
    • 1. 什麼是 Locust?
      • Locust 是易於使用的分散式使用者負載測試工具。它旨在對網站系統(或其他系統)進行負載測試並且確定該系統可以承載多少個併發使用者。
    • 2.Locust 特點有哪些?
    • 1.用普通的 python 編寫使用者測試指令碼
      • 不需要笨拙的 ui 或臃腫的 xml——只需像通常那樣編寫程式碼即可。基於協程而不是回撥,程式碼的外觀和行為與正常的、阻塞 Python 程式碼的程式碼一樣。
    • 2.分散式和可擴充套件
      • Locust 支援在多臺機器上執行負載測試。由於基於事件,即使一個 Locust 節點也可以在一個程序中處理數千個使用者。這背後的部分原因是,即使您模擬了那麼多使用者,也不是所有使用者都主動地攻擊您的系統。通常,使用者都在無所事事地思考下一步該做什麼。每秒請求數!=線上使用者數量。
    • 3.基於 web 的 UI 頁面
      • Locust 具有簡潔的 HTML + JS 使用者介面,可實時顯示相關的測試詳細資訊。而且由於 UI 是基於 Web 的,因此它是跨平臺的並且易於擴充套件
    • 4.可以測試任何系統
      • 儘管 Locust 是面向 Web 的,它也可以用於測試幾乎所有系統。只需編寫一個您想要測試的客戶端,然後用 locust 來包圍它!超級容易!
    • 5.可控性
      • locust 是非常小的且可控制的,我們旨在讓它保持這種狀態。所有重大的事件 I/O 和協程都委託給 gevent。我們建立 Locust 的原因是替代測試工具的脆弱性
  • 2.安裝(Tips:目前 locust 支援 python 版本:Python 3.6、3.7 和 3.8)
    • 1.windows 下安裝
      • pip install locust
    • 2.mac 下安裝
      • pip install locustio
    • 3.安裝成功驗證
      • locust -help
    • 4.注意事項
      • 1.在 Windows 上執行 Locust 應該可以很好地開發和測試負載測試指令碼。但是,在執行大規模測試時,建議您在 Linux 計算機上執行此操作,因為 gevent 在 Windows 下的效能很差。
      • 2.機器上的每個 HTTP 連線都會開啟一個新檔案(技術上是檔案描述符)。作業系統可能會為可以開啟的最大檔案數設定一個下限。如果該限制小於測試中模擬使用者的數量,則會發生故障。將作業系統的預設最大檔案數限制增加到大於您要執行的模擬使用者數的數量。如何執行此操作取決於所使用的作業系統
  • 3.測試 demo
from locust import Locust, TaskSet, task, between
from time import time


class MyTaskSet(TaskSet):

    # TaskSet相當於下面所有task的大腦
    @task(1)  # 宣告任務
    def my_task(self):
        print("執行task" + str(int(time())))

    @task(2)
    def my_task_2(self):
        print("執行task2" + str(int(time())))


class WebUser(Locust):
    task_set = MyTaskSet

    weight = 5
    wait_time = between(5, 15)
    host = ""  # 域名host
  • 1.demo 中我們用 MyTaskSet 來定義使用者的操作行為類。一個操作行為類中可以包含多個行為函式(每個行為函式可以進行介面請求,斷言等),使用@task來定義每個函式執行的權重(按照 demo 中配置的,my_task:my_task_2=1:2,可以有兩種理解,一種理解是:執行任務 1 和任務 2 的比例是 1:2;第二種理解:根據機率來說,進入該行為類,使用者有三分之二的機率來選擇執行第二個任務,本人更傾向於用第二種理解來解釋這樣的權重配置
  • 2.demo 中使用 WebUser 類來定義使用者集(繼承 Locust 類,後續根據請求介面的客戶端來使用對應的子類,比如 http 請求的 HttpLocust)。一個使用者集中可以包含(使用者行為類task_set,權重值weight,訪問域名host,等待時間wait_time(請使用 between),引數化的使用者佇列後續會提及),當然權重的概念還是建議大家用機率的概念來進行理解。
  • 3.執行編寫的指令碼,比如對應的.py 檔案在專案的路徑:xx/xx.py,透過簡單的執行命令:locust -f xx/xx.py 來執行,開啟 localhost:8089,來配置使用者數和每秒啟動使用者數 (由於該用例中沒有請求介面的,所以結果 ui 頁面沒有展示,可透過最後一張圖在 pycharm 中看執行的結果)

相關文章