1. 程式人生 > 其它 >Locust:簡介和基本用法

Locust:簡介和基本用法

我個人在效能測試工作中,負載生成工具使用的大多都是jmeter,現在來看看locust,因為可以用python編寫指令碼,進行定製化,而我自己就是用python比較多,所以用一下這個效能工具

官網:https://www.locust.io/

官方文件:https://docs.locust.io/en/stable/index.html

一、認識Locust

1、定義

Locust是一款易於使用的分散式負載測試工具,完全基於事件,即一個locust節點也可以在一個程序中支援數千併發使用者,不使用回撥,通過gevent使用輕量級過程(即在自己的程序內執行)。

locust是蝗蟲的意思,很影響,效能測試就好像蝗蟲來襲的樣子

看看官網的介紹:

An open source load testing tool.
Define user behaviour with Python code, and swarm your system with millions of simultaneous users.

2、特點

①、不需要編寫笨重的UI或者臃腫的XML程式碼,基於協程而不是回撥,指令碼編寫簡單易讀;

②、有一個基於we簡潔的HTML+JS的UI使用者介面,可以實時顯示相關的測試結果;

③、支援分散式測試,使用者介面基於網路,因此具有跨平臺且易於擴充套件的特點;

④、所有繁瑣的I / O和協同程式都被委託給gevent,替代其他工具的侷限性;

3、locust與jmeter的區別

工具 區別
jmeter 需要在UI介面上通過選擇元件來“編寫”指令碼,模擬的負載是執行緒繫結的,意味著模擬的每個使用者,都需要一個單獨的執行緒。單臺負載機可模擬的負載數有限
locust 通過編寫簡單易讀的程式碼完成測試指令碼,基於事件,同樣配置下,單臺負載機可模擬的負載數遠超jmeter

PS:但locust的侷限性在於,目前其本身對測試過程的監控和測試結果展示,不如jmeter全面和詳細,需要進行二次開發才能滿足需求越來越複雜的效能測試需要。

二、安裝Locust

###

mac下安裝Locust

pip install locust

檢測locust是否安裝成功

locust --help

####

三、一個簡單的示例

準備指令碼

我們看看官網的例子:

from locust import HttpUser, task

class HelloWorldUser(HttpUser):
    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

###

啟動介面

Put the code in a file named locustfile.py in your current directory and run locust:

也就是說,把上面的程式碼放到一個locustfile.py 的檔案裡面,然後在這個資料夾下面,直接命令列執行:locust

Once you’ve started Locust, open up a browser and point it tohttp://localhost:8089. You will be greeted with something like this:

所以訪問http://0.0.0.0:8089/,就可以看到locust給我們提供的介面了

###

介面的說明和使用

Number of users to simulate:設定模擬的使用者總數

spawnedrate (users spawned/second):每秒啟動的虛擬使用者數

host,你要壓測的地址host

Start swarming:執行locust指令碼

####

測試結果介面

我使用我的本地的一個介面地址,http://127.0.0.1:5000/
然後再本地就可以看到刷刷的開始看到請求了

PS:點選STOP可以停止locust指令碼執行:

Type:請求型別,即介面的請求方法;

Name:請求路徑;

requests:當前已完成的請求數量;

fails:當前失敗的數量;

Median:響應時間的中間值,即50%的響應時間在這個數值範圍內,單位為毫秒;

Average:平均響應時間,單位為毫秒;

Min:最小響應時間,單位為毫秒;

Max:最大響應時間,單位為毫秒;

Content Size:所有請求的資料量,單位為位元組;

reqs/sec:每秒鐘處理請求的數量,即QPS;

###

各模組說明

New test:點選該按鈕可對模擬的總虛擬使用者數和每秒啟動的虛擬使用者數進行編輯;

Statistics:類似於jmeter中Listen的聚合報告;

Charts:測試結果變化趨勢的曲線展示圖,分別為每秒完成的請求數(RPS)、響應時間、不同時間的虛擬使用者數;

Failures:失敗請求的展示介面;

Exceptions:異常請求的展示介面;

Download Data:測試資料下載模組, 提供三種類型的CSV格式的下載,分別是:Statistics、responsetime、exceptions;

###

這是簡單的介紹和使用,還需要深入一下,