引言
前面已經介紹Locust基本使用與案例分享,腳本已經寫好後,我們僅僅只是完成了一小部分的工作,對於監控到的數據展示以及後面的數據準確性分析、問題定位等等,我們並沒有講到。該篇簡單分享一下Locust界面上面基本知識與使用。
UI界面
這裏就不重複講解腳本中的代碼了,如果不懂,建議從頭看起。
腳本如下:
from locust import TaskSet,HttpLocust,between,task class TestLogin(TaskSet): def setup(self): print("開始...") def teardown(self): print("結束...") def _login(self): url = '/api/private/v1/login' body = { "username": "admin", "password": "123456" } r = self.client.post(url=url, data=body) print("測試") print("響應數據是:%s"%r.text) assert "登錄成功" in r.text return r.json()['data']['token'] def logout(self): print("退出系統") @task(1) def goods_list(self): url = '/api/private/v1/goods' params = { "pagenum":1, "pagesize":10 } headers = { 'Authorization': self._login() } r = self.client.get(url=url,params=params,headers=headers) print(r.text) print("獲取商品列表") @task(1) def user_list(self): url = '/api/private/v1/users' params = { 'pagenum':1, 'pagesize':1 } headers = { 'Authorization':self._login() } r = self.client.get(url=url,params=params,headers=headers) print(r.text) print("獲取用戶列表") def on_start(self): """ on_start is called when a Locust start before any task is scheduled """ print("啓動") self._login() def on_stop(self): """ on_stop is called when the TaskSet is stopping """ print("停止") self.logout() import random class WebsiteUser(HttpLocust): task_set = TestLogin def setup(self): print('locust setup') def teardown(self): print('locust teardown') wait_time = between(5,6) wait_function = lambda self: random.expovariate(1) * 1000 if __name__ == '__main__': import os os.system('locust -f locustfile_pro.py --host=http://127.0.0.1:8899 --port=8084')
運行結果:
[2020-06-24 00:58:40,686] WIN10-804191526/INFO/locust.main: Starting web monitor at http://*:8084 [2020-06-24 00:58:40,686] WIN10-804191526/INFO/locust.main: Starting Locust 0.14.6 [2020-06-24 00:58:43,586] WIN10-804191526/INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)... [2020-06-24 00:58:43,586] WIN10-804191526/ERROR/stderr: d:\python3\lib\site-packages\locust\util\deprecation.py:12: DeprecationWarning: Usage of wait_function is deprecated since version 0.13. Declare a WebsiteUser.wait_time method instead (should return seconds and not milliseconds) "(should return seconds and not milliseconds)" % type(locust_or_taskset).__name__, DeprecationWarning) [2020-06-24 00:58:43,586] WIN10-804191526/INFO/stdout: locust setup [2020-06-24 00:58:43,586] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,587] WIN10-804191526/INFO/locust.runners: All locusts hatched: WebsiteUser: 1 (0 already running) [2020-06-24 00:58:43,587] WIN10-804191526/INFO/stdout: 開始... [2020-06-24 00:58:43,587] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,587] WIN10-804191526/INFO/stdout: 啓動 [2020-06-24 00:58:43,587] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,668] WIN10-804191526/INFO/stdout: 測試 [2020-06-24 00:58:43,668] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,668] WIN10-804191526/INFO/stdout: 響應數據是:{"data":{"id":500,"rid":0,"username":"admin","mobile":"12345678","email":"[email protected]","token":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTI5MzE1MjMsImV4cCI6MTU5MzAxNzkyM30.Jzs3jsLsmCkHozXhZueadEdiilJ1aHBYPHn2t8lARgQ"},"meta":{"msg":"登錄成功","status":200}} [2020-06-24 00:58:43,668] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,743] WIN10-804191526/INFO/stdout: 測試 [2020-06-24 00:58:43,743] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,743] WIN10-804191526/INFO/stdout: 響應數據是:{"data":{"id":500,"rid":0,"username":"admin","mobile":"12345678","email":"[email protected]","token":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTI5MzE1MjMsImV4cCI6MTU5MzAxNzkyM30.Jzs3jsLsmCkHozXhZueadEdiilJ1aHBYPHn2t8lARgQ"},"meta":{"msg":"登錄成功","status":200}} [2020-06-24 00:58:43,743] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,755] WIN10-804191526/INFO/stdout: {"data":{"total":926,"pagenum":"1","goods":[{"goods_id":926,"cat_id":null,"goods_name":"【海外購自營】黎琺(ReFa) MTG日本 CARAT鉑金微電流瘦臉瘦身提拉緊緻V臉美容儀 【保稅倉發貨】","goods_price":1399,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514345477,"upd_time":1514345477,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":925,"cat_id":null,"goods_name":"卡奇萊德汽車車載空氣淨化器負離子除甲醛PM2.5除煙異味車用氧吧雙渦輪出風(紅色)","goods_price":168,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259452,"upd_time":1514259452,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":924,"cat_id":null,"goods_name":"沿途(yantu)車載充電器車充一拖二usb轉接口手機智能頭多功能汽車點菸器","goods_price":0,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259448,"upd_time":1514259448,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":923,"cat_id":null,"goods_name":"車載冰箱7.5L 冷暖兩用汽車冰箱半導體12V迷你電冰箱升級款","goods_price":149,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259445,"upd_time":1514259445,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":922,"cat_id":null,"goods_name":"神行者電子狗 神行者L70電子狗測速 測速雷達 流動測速 多種警示路段提醒","goods_price":98,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259442,"upd_time":1514259442,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":921,"cat_id":null,"goods_name":"360行車記錄儀尊享升級版 J501C 安霸A12 高清夜視 WIFI連接 智能管理 機卡套裝 黑色(存儲卡品牌隨機)","goods_price":359,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259438,"upd_time":1514259438,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":920,"cat_id":null,"goods_name":"淘爾傑汽車專用伸縮蠟拖 除塵車撣子擦車拖把 洗車蠟刷清潔工具用品","goods_price":39,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259435,"upd_time":1514259435,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":919,"cat_id":null,"goods_name":"保賜利(botny) 防霧劑汽車用長效霧清車窗擋風玻璃浴室去霧劑除霧劑玻璃清潔劑 B-2113","goods_price":0,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259432,"upd_time":1514259432,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":918,"cat_id":null,"goods_name":"龜牌硬殼蠟新汽車防護劃痕去污上光拋光養護漆固體洗車打蠟臘正品","goods_price":49,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259429,"upd_time":1514259429,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null},{"goods_id":917,"cat_id":null,"goods_name":"點繽汽車車漆劃痕修復補漆筆漆面修復油漆修補套裝珠光珍珠白色點漆筆--單支補漆筆","goods_price":14,"goods_number":100,"goods_weight":100,"goods_state":0,"add_time":1514259426,"upd_time":1514259426,"hot_mumber":0,"is_promote":false,"cat_one_id":null,"cat_two_id":null,"cat_three_id":null}]},"meta":{"msg":"獲取成功","status":200}} [2020-06-24 00:58:43,755] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:43,755] WIN10-804191526/INFO/stdout: 獲取商品列表 [2020-06-24 00:58:43,755] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:49,428] WIN10-804191526/INFO/stdout: 測試 [2020-06-24 00:58:49,428] WIN10-804191526/INFO/stdout: [2020-06-24 00:58:49,428] WIN10-804191526/INFO/stdout: 響應數據是:{"data":{"id":500,"rid":0,"username":"admin","mobile":"12345678","email":"[email protected]","token":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTI5MzE1MjksImV4cCI6MTU5MzAxNzkyOX0.5CPSH2efZE34jSQOrZxL7mp0nQ1jhWQAjMFGev1FNlU"},"meta":{"msg":"登錄成功","status":200}} [2020-06-24 00:58:49,428] WIN10-804191526/INFO/stdout:
啓動界面
名詞解析:
Number of users to simulate:設置模擬的用戶總數
Hatch rate (users spawned/second):每秒啓動的虛擬用戶數
Start swarming:執行locust腳本
測試監控界面
Statistics類似Jmeter中的聚合報告
名詞解析:
Type:請求類型,即接口的請求方法;
Name:請求名稱;
requests:當前已完成的請求數量;
fails:當前失敗的數量;
Median:響應時間的中間值,即50%的響應時間在這個數值範圍內,單位爲毫秒;
90%ile:根據正態分佈,90%的響應時間在正態分佈平均值下方,即小於這個值;
Average:平均響應時間,單位爲毫秒;
Min:最小響應時間,單位爲毫秒;
Max:最大響應時間,單位爲毫秒;
average Size:平均每個請求的數據量,單位爲字節;
current RPS(requests per second):每秒鐘處理請求的數量,即RPS。(以前叫reqs/sec:每秒鐘處理請求的數量,即QPS;),所以這兩個可以看成一個。
Charts模塊說明
測試結果變化趨勢的曲線展示圖,分別爲每秒完成的請求數(RPS)、響應時間、不同時間的虛擬用戶數。
RPS:
響應時間:
不同時間的用戶數:
注意:這些圖表沒有持久性,如果刷新此頁面,將創建新的圖表。
Failtures模塊說明
失敗請求的展示界面。即服務器原因導致無法處理請求。
Exceptions模塊說明
常請求的展示界面
Download Data
測試數據下載模塊, 提供三種類型的CSV格式的下載,分別是:Statistics CSV、responsetime CSV、failures CSV、exceptions CSV。
Statistics CSV
statistics csv的數據信息和前面Statistics的是一致的。
responsetime CSV
responsetime CSV和Statistics介紹的90%ile類似,更精確地顯示響應時間在各區間分佈情況。
New Test模塊說明
點擊該按鈕可對模擬的總虛擬用戶數和每秒啓動的虛擬用戶數進行編輯。
Number of users to simulate:模擬的總虛擬用戶數
Hatch rate (users spawned/second):每秒啓動的虛擬用戶數
HOST:測試的地址
總結
以上即爲locust的介紹和簡單使用以及說明,更多詳細的內容請參考官方文檔。。。有興趣的朋友可以加入測開交流羣進行溝通與學習,一起成長!