視頻講解
點擊下方鏈接,觀看 講解視頻
https://www.bilibili.com/video/av60089015/
動機
目前市場上對API接口做性能測試工具有 Jmeter、LoadRunner、AB、Locust等。
白月黑羽用過之后,覺得它們各有優點和不足,總體不是很滿意。
所以 決定 自己開發一款免費的性能測試工具,希望集上面這些工具的優點,提供給大家使用。並且根據大家的反饋 不斷的改進。
大家有問題可以到白月黑羽官方網站 http://www.python3.vip 反饋。
於是就有了 這款 HyLoad
,中文名叫 黑羽壓測
。
特點
黑羽壓測 這款工具,立足 簡單易用 和 性能強 兩個特性。
-
簡單易用
點擊就可以產生 測試代碼模板,修修改改 就能進行測試
-
性能強
單機可達 每秒 一萬個請求,並發連接數可達 數萬
下載地址
最新版本下載地址在官方網站 http://www.python3.vip/doc/tutorial/hyload/01/
安裝過程
下載的是一個 自解壓安裝程序,直接拷貝到安裝目錄(比如 d:\tools
目錄)下,雙擊打開,就會解壓出一個 HyLoad_1.x.x
的目錄。
進入該目錄,雙擊可執行程序HyLoad.exe,即可運行 黑羽壓測。
黑羽壓測 需要 監聽獲取性能統計數據,所以初次啟動,Windows會有防火牆提示選擇允許即可。
快速開始
HyLoad做性能測試通常分為如下幾步:
第1步 創建項目
HyLoad 的界面如下圖所示
這個界面 就是讓用戶選擇或者創建項目的。
HyLoad 項目 就是一個目錄,里面包含了性能測試的定義文件。
點擊 界面 新建項目
按鈕,在彈出界面 輸入 項目的 目錄名, 並且為項目選擇上級路徑。比如,下圖所示
點擊確定,上方就會出現當前的項目路徑,如下所示
第2步 定義單個客戶端行為
點擊左邊菜單欄 這里,
定義單個客戶端行為。
性能測試是 模擬 大量的客戶端
大批量的發送請求消息 給 被測的服務器。
那么,其中每個 客戶端的行為 是怎樣的? 需要我們先定義好。
單個客戶端行為定義好 以后, 我們在第3步只要指定產生 多少個 這樣的客戶端就可以了。
首先,我們點擊這里,添加一個客戶端的行為定義。
這樣會創建一個名為 act-1 的客戶端的行為定義文件。
客戶端的行為定義 其實就是一段 Python代碼。
不會寫Python代碼的小朋友們,不用害怕,我們的工具會幫你自動產生代碼哦。
點擊右邊的這些欄目,就會產生 對應的代碼。
大家可以按照上面的箭頭所示,依次從上到下,點擊3個條目,就會產生如下所示的代碼
# 創建客戶端 client = HttpClient('127.0.0.1', # 目標地址:端口 timeout=10 # 超時時間,單位秒 ) # 發送 GET 請求 response = client.sendAndRecv( 'GET', # 請求方法 GET/POST/PUT/DELETE等 "/api/path1" # 請求URL ) print(f"消息體字符串為 {response.string('utf8')} ")
顯然,這是創建 客戶端、發送請求給服務器、獲取服務器響應消息體內容(如果是json格式的話)。
注意,點擊右邊條目的時候,代碼會插入在當前光標處,所以務必注意光標在編輯窗口中的位置。
我們以新浪的股票接口為例,它的API 服務 url是 http://hq.sinajs.cn/list=sh601006
最后list的值是股票代碼。
那么我們只要簡單修改一下上面自動生成的代碼,如下所示,注意注釋的解釋
# 目標地址改為新浪服務器地址 client = HttpClient('hq.sinajs.cn', timeout=10 ) response = client.sendAndRecv( 'GET', "/list=sh601006" # 請求URL修改 ) # 由於服務端返回的json格式數據是gbk編碼 # 所以改為gbk print(f"消息體字符串為 {response.string('gbk')} ")
這就是 客戶端行為定義, 做好了以后,點擊 右上方的運行按鈕,就會先執行一下單個用戶的測試。
工具會打開終端窗口,運行該代碼, 結果如下
當然,我們做性能測試,一個客戶端,通常也是要反復地發送消息,這時,可以選擇循環發送請求,
然后,修改一下代碼,變成下面這樣
client = HttpClient('hq.sinajs.cn', timeout=10 ) while True: response = client.sendAndRecv( 'GET', "/list=sh601006", # 修改url duration=1 # 接收到響應后等待,確保本操作耗時1秒 )
這樣的修改,就是要求這個客戶端每隔一秒鍾,發送一個 HTTP請求 給被測的服務器。
第3步 定義性能測試場景
單個客戶端定義好了, 要做性能測試,只要點擊左側菜單欄這里,定義性能測試場景
]
同樣,點擊下圖處,添加一個性能場景定義。
然后,點擊這里,插入 創建10個客戶端 的示例代碼
如下所示
# 定義性能場景,點擊右邊條目,可自動插入功能代碼 createClient( 'act-1', # 客戶端名稱 10, # 啟動客戶端數量 0.1 # 每隔多少秒,啟動一個客戶端 )
當然,你可以自行修改客戶端的數量。
這里,如果就是10個客戶端,每個客戶端每秒發送一個請求,10個客戶端就是每秒10個請求。
隨后,點擊右上角運行按鈕,就會打開一個窗口,按照我們的定義,運行該 性能測試了。如下
監控統計
點擊左邊菜單欄的 監控統計 圖標,可以查看本次性能測試的實時監控,如下所示
如果你想結束本次性能測試,只需要關閉 運行性能測試的命令行窗口即可。
等整個性能測試結束,通常你需要產生這次性能測試的 統計圖表,包括如下數據的圖表
-
rps , 每秒發送請求數
-
tps , 每秒接收響應數
-
eps, 每秒錯誤響應數
-
tops, 每秒超時請求個數
-
avgresptime, 每秒平均響應時長
這些統計數據, 都保存在項目的目錄中的數據文件里面。
只需要點擊 數據文件統計
按鈕,然后選擇剛剛產生的數據文件(文件名就是當前日期時間),如下所示
]
這樣,就會產生統計圖,如下所示
你可以點擊上圖箭頭處,將統計圖最終存為圖片,方便放到測試報告中。