Locust 基於Python的效能壓測工具

2021-10-08 05:32:04 字數 2740 閱讀 9478

開源效能測試工具基於python的效能壓測工具,使用python **來定義使用者行為,模擬百萬計的併發使用者訪問。每個測試使用者的行為由您定義,並且通過web ui實時監控聚集過程。

壓力發生器作為效能測試工具的核心部分,兩個核心要點有:一是真實模擬使用者操作,二是模擬有效併發

主流壓測工具對比:

主要的三個類: httplocust, taskset, task

locust類代表一群蝗蟲,而每乙隻蝗蟲就是乙個類的例項,taskset類則可代表蝗蟲的大腦,即實際業務場景測試對應的任務集。

2.1 locust類

繼承於locust的類代表乙個使用者,locust會為每乙個模擬使用者生成乙個locust類例項。在locust類中,還有幾個屬性需要關注下: 

屬性含義

client屬性

虛擬使用者作為客戶端所具備的請求能力,也就是常說的請求方法。http(s)協議,locust已經實現了httplocust類。其client屬性繫結了httpsession類,而httpsession又繼承自requests.session。因此在測試http(s)的locust指令碼中,我們可以通過client屬性來使用python requests庫的所有方法,包括get/post/head/put/delete/patch等,呼叫方式也與requests完全一致。

task_set

指向乙個taskset類,taskset類定義了使用者的任務資訊,該屬性為必填

min_wait/max_wait

以ms為單位的最小值和最大值,乙個模擬使用者將會在每個任務執行時的等待執行的時間間隔。預設設定為1000,如果不宣告的話,locust會預設在每個任務間等待1秒。

weight

乙個測試用例中新增多個locust例項,每個locust例項執行佔的比重,數值越大,執行頻率越高.

被測系統的host,要載入目標url的字首(如:""),當在終端中啟動locust時沒有指定--host引數時才會用到。

2.2 taskset類

taskset定義任務資訊,是定義待測試的任務**集。每乙個locust類中包含乙個指向taskset的task_set屬性設定。測試任務開始後,每個 locust 使用者會從 taskset 中隨機挑選乙個任務執行,然後隨機等待 httplocust 類中定義的 min_wait和 max_wait 之間的一段時間,執行下乙個任務。

2.3 task

通過@task()裝飾的方法為乙個事務。方法的引數用於指定該行為的執行權重。引數越大每次被虛擬使用者執行的概率越高。如果不設定預設為1。

tasks = 表示每個使用者執行 classname 的頻率是2

2.4 執行原理

測試開始後,每個虛擬使用者(locust例項)的執行邏輯都會遵循如下規律:

先執行websitetasks中的on_start(有則執行,只執行一次),作為初始化;

從websitetasks中隨機挑選(如果定義了任務間的權重關係,那麼就是按照權重關係隨機挑選)乙個任務執行;

根據locust類中min_wait和max_wait定義的間隔時間範圍(如果taskset類中也定義了min_wait或者max_wait,以taskset中的優先),在時間範圍中隨機取乙個值,休眠等待;

重複2~3步驟,直至測試任務終止。

3.1 例項

v1.1 有些小改動,原理類似,quickstartuser繼承httpuser,定義使用者行為集。

self.client.get('/') //支援斷言

3.2 執行結果:

locust -f demo_pt.py       #  --host=   -f, --locustfile:指定執行的locust指令碼檔案
1)number of users to simulate:設定模擬使用者數

2)hatch rate (users spawned/second)  :每秒產生(啟動)的使用者數。

參考:

locust基於python的壓測框架

一 locust安裝 python安裝目錄安裝pip install locustio 0.13.0 安裝的時候記得選擇乙個低版本,不然就會報錯 二 locust簡介 最好的內容莫過於官網,經過深思熟慮之後留下的精華 三 重點內容 number of users to simulate 設定模擬的使...

python壓測工具Locust

locust作為基於python語言的效能測試框架。其優點在於他的併發量可以實現單機10倍於loadrunner和jmeter工具。他的工作原理為協程併發,也就是gevent庫。locust的缺點也顯而易見,他沒有友好的效能監控頁面,沒有任何關聯,引數化,檢查點之類的定義。當然基於python這些都...

關於python的Locust庫的使用方法

討論效能測試工具我們的第一反應一般是loadrunner和jmeter,其實在python中,還有乙個叫locust的小工具。locust在英語中是 蝗蟲 的意思,它可以模擬成千上萬的蝗蟲一樣去向系統發起請求,模擬系統在高併發的狀態下的執行狀態。locust的安裝 pip install locus...