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中看執行的結果)

相關文章