性能測(cè)試中負(fù)載測(cè)試大多數(shù)用JMeter孝冒。今天說(shuō)的Locust是基于Python開(kāi)發(fā)的一個(gè)開(kāi)源框架。
JMeter和Locust區(qū)別
JMeter:需要在UI界面上通過(guò)選擇組件來(lái)“編寫(xiě)”腳本阻课,模擬的負(fù)載是線程綁定的缕允,意味著模擬的每個(gè)用戶宪郊,都需要一個(gè)單獨(dú)的線程掂恕。單臺(tái)負(fù)載機(jī)可模擬的負(fù)載數(shù)有限。需要一定的Java編程基礎(chǔ)废膘。
Locust:通過(guò)編寫(xiě)簡(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
編寫(xiě)Locust示例:
腳本說(shuō)明:
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的兩倍青瀑。