前言:
locust是完全基於python,是一個簡單易用的分布式負載測試工具
Locust特性
使用Python編寫模擬用戶行為的代碼,無需繁瑣的配置
分布式可擴展,能夠支持上百萬用戶
自帶Web界面
不僅能測試web系統,也可以測試其它
Locust思想
在測試過程中,一群用戶將訪問你的網站。每個用戶的行為由你編寫的Python代碼定義,同時可以從Web界面中實時觀察到用戶的行為。
Locust完全是事件驅動的,因此在單台機器上能夠支持幾千並發用戶訪問。與其它許多基於事件的應用相比,Locust並不使用回調,而是使用gevent,而gevent是基於協程的,可以用同步的方式來編寫異步執行的代碼。每個用戶實際上運行在自己的greenlet中
http請求完全是基於requests庫。Locust支持http、https協議,還支持測試其他協議,websocket等,只要采用Python調用對應的庫就可以了
Locust和jmeter、lr優點對比3
性能測試很難在單機上獲得很高的並發量,lr、jmeter這類工具采用進程和線程來壓測,單機並發量不高。(一般都要用幾台電腦做壓力發射機)
ocust並發機制擯棄了進程和線程,采用協程(gevent)機制。協程避免了系統級資源調度,可以大大提高單機並發能力
locust的安裝
cmd命令下執行 pip install locustio 進行安裝

注:小波之前就安裝過了~~就不在贅述了
安裝完成以后可以查看 locust命令有哪些選項,鍵入locust --help命令可以查看

如果打算分布式運行locust則需要安裝pyzmp
cmd命令下執行pip install pyzmq 執行安裝

下面是小波對公司的一個接口進行壓測例子
例如:編寫名為locust_yace.py文件,如下:

在上面的代碼中首先集成了TaskSet類來定義用戶的行為,(比如訪問網站的行為,或者接口請求的行為)緊接着HttpLocust類表示一個用戶,這個用戶具有哪些行為,以及該用戶在執行下一個任務之前應該等待多長時間。
接下來就可以啟動性能測試了~~
cmd命令進入到壓測文件目錄下,執行測試

-f locust_yace.py 指定性能壓測文件
2.--host 指定被測試url的主機地址(IP地址)(如果是接口,就寫接口地址即可)
接下來,通過瀏覽器訪問localhost:8089

點擊start swarming進行測試:

1.Type:請求類型;
2.Name:請求路徑;
3.requests:當前請求的數量;
4.fails:當前請求失敗的數量;
5.Median:中間值,單位毫秒,一般服務器響應時間低於該值,而另一半高於該值;
6.Average:所有請求的平均響應時間,毫秒;
7.Min:請求的最小的服務器響應時間,毫秒;
8.Max:請求的最大服務器響應時間,毫秒;
9.Content Size:單個請求的大小,單位字節;
10.reqs/sec:每秒鍾請求的個數。
這個是通過瀏覽器測試的形式,可以通過測試場景設計的時間長度運行,壓力測試時間(一般都是5分鍾以上)足夠后,需要手動點擊stop按鈕,結束壓力測試。
