簡介:
An open source load testing tool.
一個開源性能測試工具。
define user behaviour with python code, and swarm your system with millions of simultaneous users.
使用Python代碼來定義用戶行為。用它可以模擬百萬計的並發用戶訪問你的系統。
Locust 完全基本 Python 編程語言,采用 Pure Python 描述測試腳本,並且 HTTP 請求完全基於 Requests 庫。
除了 HTTP/HTTPS 協議,Locust 也可以測試其它協議的系統,只需要采用Python調用對應的庫進行請求描述即可。
LoadRunner 和 Jmeter 這類采用進程和線程的測試工具,都很難在單機上模擬出較高的並發壓力。
Locust 的並發機制摒棄了進程和線程,采用協程(gevent)的機制。協程避免了系統級資源調度,由此可以大幅提高單機的並發能力
安裝:
通過PIP命令安裝:
pip install locust
編寫腳本:
from locust import HttpUser, TaskSet, task class UserBehavior(TaskSet): @task(1) def baidu(self): self.client.get("/") class WebsiteUser(HttpUser): task_set = UserBehavior min_wait = 3000 max_wait = 6000
創建UserBehavior()類繼承TaskSet類,為用戶行為。
創建baidu() 方法表示一個行為,訪問百度首頁。用@task() 裝飾該方法為一個任務。1表示一個Locust實例被挑選執行的權重,數值越大,執行頻率越高。在當前UserBehavior()行為下只有一個baidu()任務,所以,這里的權重設置為幾,並無影響。
WebsiteUser()類用於設置性能測試。
task_set :指向一個定義了的用戶行為類。
min_wait :用戶執行任務之間等待時間的下界,單位:毫秒。
max_wait :用戶執行任務之間等待時間的上界,單位:毫秒。
運行腳本:
locust -f .\locustfile.py --host=https://www.baidu.com
-f 指定性能測試腳本文件。
–host 指定被測試應用的URL的地址
輸出:
[2020-06-20 11:16:09,859] WINDOWS-8TS3PNG/WARNING/locust.main: System open file limit setting is not high enough for load testing, and the OS wouldnt allow locust to increase it by itself. See https://docs.locust.io/en/stable/installation.html#increasing-maximum-number-of-open-files-limit for more info. [2020-06-20 11:16:09,860] WINDOWS-8TS3PNG/INFO/locust.main: Starting web interface at http://:8089 [2020-06-20 11:16:09,874] WINDOWS-8TS3PNG/INFO/locust.main: Starting Locust 1.0.3
進行測試:
通過瀏覽器訪問:http://localhost:8089(Locust啟動網絡監控器,默認為端口號為: 8089)
Number of users to simulate 設置模擬用戶數。
Hatch rate(users spawned/second) 每秒產生(啟動)的虛擬用戶數。
點擊 “Start swarming” 按鈕,開始運行性能測試。
運行結果:
參數 | 說明 |
---|---|
Type | 請求的類型,例如GET/POST |
Name | 請求的路徑。 |
request | 當前請求的數量 |
fails | 當前請求失敗的數量 |
Median | 中間值,單位毫秒,一半的服務器響應時間低於該值,而另一半高於該值 |
Average | 平均值,單位毫秒,所有請求的平均響應時間 |
Min | 請求的最小服務器響應時間,單位毫秒 |
Max | 請求的最大服務器響應時間,單位毫秒 |
Content Size | 單個請求的大小,單位字節 |
reqs/sec | 是每秒鍾請求的個數 |
Charts
吞吐量/每秒響應事務數(rps)實時統計
平均響應時間/平均事務數實時統計
虛擬用戶數運行
基本測試完成,重點是測試腳本的編寫。