1. 程式人生 > 實用技巧 >locust效能測試

locust效能測試

簡介:

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)實時統計

平均響應時間/平均事務數實時統計

虛擬使用者數執行

基本測試完成,重點是測試指令碼的編寫。