在掌握了 Locust 的基本用法與參數化測試之後,今天我們要進一步探討壓力測試中一個核心概念:負載模式(Load Mode)。
不同的負載模式決定了虛擬使用者數量隨時間變化的方式,理解並善用它們,能幫助我們更精準地模擬真實世界的流量場景,並發現系統在各種負載條件下的表現與瓶頸。
負載模式描述了測試過程中虛擬使用者的數量如何隨時間變化。選擇正確的負載模式,能模擬出不同的真實使用場景,例如:
這些模式不僅能揭露系統的性能瓶頸,也有助於驗證擴展性與穩定性。
Locust 內建兩種主要的負載增長模式:
線性模式是 Locust 的預設行為。在此模式下,虛擬使用者會以固定速率連續增加,直到達到指定人數。
特點
常見應用場景
執行範例
# 在 10 秒內增長至 50 使用者,並持續 5 分鐘
locust -f linear_load_test.py --headless --users 50 --spawn-rate 5 --run-time 5m --host http://localhost:8080
階梯模式透過「分階段」增加虛擬使用者,每個階段會維持一段時間後再進入下一階段,使測試更接近真實流量高低起伏。
特點
常見應用場景
啟用方式
在測試腳本中自訂 LoadTestShape
類別即可,例如:
from locust import LoadTestShape
class MyStepLoadShape(LoadTestShape):
stages = [
{"duration": 60, "users": 10, "spawn_rate": 5},
{"duration": 120, "users": 50, "spawn_rate": 10},
{"duration": 180, "users": 100, "spawn_rate": 20},
]
def tick(self):
run_time = self.get_run_time()
for stage in self.stages:
if run_time < stage["duration"]:
return stage["users"], stage["spawn_rate"]
return None
執行方式:
locust -f step_load_test.py
此時,Locust 會自動依照 StepLoadShape
中的邏輯執行,不需額外指定 --users
、--spawn-rate
。
特性 | Linear Load Mode | Step Load Mode |
---|---|---|
壓力增長方式 | 平滑、連續 | 階段性、突發 |
系統適應節奏 | 漸進式 | 需快速適應 |
瓶頸發現能力 | 容量上限 | 特定等級問題 |
分析適合性 | 趨勢觀察 | 階段性分析 |
典型應用 | 容量/基準測試 | 真實流量模擬 |
除了線性與階梯模式,透過 LoadTestShape
也能實現更複雜的設計:
這些進階模式都能透過客製化 tick()
函式來靈活實現。
今天我們探討了 Locust 的兩種核心負載模式:
選擇正確的負載模式,能讓壓力測試更貼近真實,並揭露不同層面的系統特性。