性能測(cè)試中負(fù)載測(cè)試大多數(shù)用JMeter。今天說的Locust是基于Python開發(fā)的一個(gè)開源框架。
JMeter和Locust區(qū)別
JMeter:需要在UI界面上通過選擇組件來“編寫”腳本,模擬的負(fù)載是線程綁定的,意味著模擬的每個(gè)用戶,都需要一個(gè)單獨(dú)的線程。單臺(tái)負(fù)載機(jī)可模擬的負(fù)載數(shù)有限。需要一定的Java編程基礎(chǔ)。
Locust:通過編寫簡(jiǎn)單易讀的代碼完成測(cè)試腳本,基于事件,同樣配置下,單臺(tái)負(fù)載機(jī)可模擬的負(fù)載數(shù)遠(yuǎn)超jmeter
Locust安裝
支持的python版本:2.7、3.4、3.5、3.6;
在MacOS安裝:
- 安裝Homebrew。
- 安裝libev(gevent依賴):
在Windows上安裝:
在Windows上,運(yùn)行應(yīng)該工作。pip install locustio
編寫Locust示例:

image.png
腳本說明:
HttpLocust類表示要加上陰影線并攻擊要進(jìn)行負(fù)載測(cè)試的系統(tǒng)的HTTP“用戶”。
該用戶的行為由task_set屬性定義,該屬性應(yīng)指向一個(gè)TaskSet
此類在實(shí)例化上創(chuàng)建客戶端屬性,該實(shí)例化是一個(gè)HTTP客戶端,支持在請(qǐng)求之間保持用戶會(huì)話。
其中,代碼中馬賽克的部分是加載測(cè)試的兩個(gè)URL的站點(diǎn)。
上面的Locust類,每個(gè)模擬用戶將在請(qǐng)求之間等待5到15秒,并且第一個(gè)URL將被請(qǐng)求數(shù)的第二個(gè)URL的兩倍。