Locust 官方網站:https://www.locust.io/
1. Locust 介紹
An open source load testing tool.
一個開源性能測試工具。
define user behaviour with python code, and swarm your system with millions of simultaneous users.
使用 Python 代碼來定義用戶行爲。用它可以模擬百萬計的併發用戶訪問你的系統。
1.1 性能工具對比
-
LoadRunner 是非常有名的商業性能測試工具,功能非常強大。使用也比較複雜,目前大多介紹性能測試的書籍都以該工具爲基礎,甚至有些書整本都在介紹 LoadRunner 的使用。
-
Jmeter 同樣是非常有名的開源性能測試工具,功能也很完善,在本書中介紹了它作爲接口測試工具的使用。但實際上,它是一個標準的性能測試工具。關於Jmeter相關的資料也非常豐富,它的官方文檔也很完善。
-
Locust 同樣是性能測試工具,雖然官方這樣來描述它 “An open source load testing tool.” 。但其它和前面兩個工具有着較大的不同。相比前面兩個工具,功能上要差上不少,但它也並非優點全無。
-
Locust 完全基本 Python 編程語言,採用 Pure Python 描述測試腳本,並且 HTTP 請求完全基於 Requests 庫。除了 HTTP/HTTPS 協議,Locust 也可以測試其它協議的系統,只需要採用Python調用對應的庫進行請求描述即可。
-
LoadRunner 和 Jmeter 這類採用進程和線程的測試工具,都很難在單機上模擬出較高的併發壓力。Locust 的併發機制摒棄了進程和線程,採用協程(gevent)的機制。協程避免了系統級資源調度,由此可以大幅提高單機的併發能力。
2. 安裝
2.1 方式一:通過 pip 命令安裝
pip install locust
2.2 方式二:GitHub下載安裝
將項目克隆下來,通過Python 執行 setup.py 文件
最後,檢查是否安裝成功。在命令行中輸入 “locust --help” 回車。
3. Locust 創建性能測試
3.1 編寫性能測試腳本
創建 locustfile.py 文件
from locust import HttpUser, between, task
class WebsiteUser(HttpUser):
wait_time = between(5, 15)
@task
def index(self):
self.client.get("/")
@task
def keyword(self):
self.client.get("/s?wd=locust")
self.client.get("/s?wd=測試")
3.2 執行性能測試腳本
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
3.3 運行測試
通過瀏覽器訪問:http://localhost:8089(Locust啓動網絡監控器,默認爲端口號爲: 8089)
3.3.1 設置併發參數、並啓動測試
- Number of users to simulate 設置模擬用戶數。
- Hatch rate(users spawned/second) 每秒啓動的虛擬用戶數(小於總用戶數,以便看到用戶數增長相關趨勢變化)。
- 點擊 “Start swarming” 按鈕,開始運行性能測試。
4. 性能測試/界面參數說明
4.1 Top
4.2 Statistics
參數 | 說明 |
---|---|
Type | 請求的類型,例如GET/POST |
Name | 請求的路徑。 |
request | 當前請求的數量 |
fails | 當前請求失敗的數量 |
Median | 中間值,單位毫秒,一半的服務器響應時間低於該值,而另一半高於該值 |
Average | 平均值,單位毫秒,所有請求的平均響應時間 |
Min | 請求的最小服務器響應時間,單位毫秒 |
Max | 請求的最大服務器響應時間,單位毫秒 |
Content Size | 單個請求的大小,單位字節 |
reqs/sec | 是每秒鐘請求的個數 |