黑羽壓測 比 jmeter、locust、loadrunner 更簡便,性能更強


視頻講解


點擊下方鏈接,觀看 講解視頻

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會有防火牆提示選擇允許即可。

image

快速開始

HyLoad做性能測試通常分為如下幾步:

 

第1步 創建項目

HyLoad 的界面如下圖所示

image

這個界面 就是讓用戶選擇或者創建項目的。

HyLoad 項目 就是一個目錄,里面包含了性能測試的定義文件。

點擊 界面 新建項目按鈕,在彈出界面 輸入 項目的 目錄名, 並且為項目選擇上級路徑。比如,下圖所示

image

 

點擊確定,上方就會出現當前的項目路徑,如下所示

image

 

第2步 定義單個客戶端行為

點擊左邊菜單欄 這里,

image

定義單個客戶端行為。

性能測試是 模擬 大量的客戶端大批量的發送請求消息 給 被測的服務器。

那么,其中每個 客戶端的行為 是怎樣的? 需要我們先定義好。

單個客戶端行為定義好 以后, 我們在第3步只要指定產生 多少個 這樣的客戶端就可以了。

 

首先,我們點擊這里,添加一個客戶端的行為定義。

image

這樣會創建一個名為 act-1 的客戶端的行為定義文件。

 

客戶端的行為定義 其實就是一段 Python代碼。

不會寫Python代碼的小朋友們,不用害怕,我們的工具會幫你自動產生代碼哦。

點擊右邊的這些欄目,就會產生 對應的代碼。

image

大家可以按照上面的箭頭所示,依次從上到下,點擊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')} ") 

 

 

 

這就是 客戶端行為定義, 做好了以后,點擊 右上方的運行按鈕,就會先執行一下單個用戶的測試。

工具會打開終端窗口,運行該代碼, 結果如下

image

 

當然,我們做性能測試,一個客戶端,通常也是要反復地發送消息,這時,可以選擇循環發送請求,

image

然后,修改一下代碼,變成下面這樣

client = HttpClient('hq.sinajs.cn', 
                        timeout=10
                       ) 

while True:
    response = client.sendAndRecv(
        'GET',
        "/list=sh601006", # 修改url
        duration=1 # 接收到響應后等待,確保本操作耗時1秒
    )

 

 

這樣的修改,就是要求這個客戶端每隔一秒鍾,發送一個 HTTP請求 給被測的服務器。

 

第3步 定義性能測試場景

單個客戶端定義好了, 要做性能測試,只要點擊左側菜單欄這里,定義性能測試場景

image]

同樣,點擊下圖處,添加一個性能場景定義。

image

然后,點擊這里,插入 創建10個客戶端 的示例代碼

image

如下所示

# 定義性能場景,點擊右邊條目,可自動插入功能代碼

createClient(
    'act-1', # 客戶端名稱
    10,      # 啟動客戶端數量
    0.1      # 每隔多少秒,啟動一個客戶端
    )

 

 

 

當然,你可以自行修改客戶端的數量。

這里,如果就是10個客戶端,每個客戶端每秒發送一個請求,10個客戶端就是每秒10個請求。

隨后,點擊右上角運行按鈕,就會打開一個窗口,按照我們的定義,運行該 性能測試了。如下

image

 

監控統計

點擊左邊菜單欄的 監控統計 圖標,可以查看本次性能測試的實時監控,如下所示

image

 

如果你想結束本次性能測試,只需要關閉 運行性能測試的命令行窗口即可。

等整個性能測試結束,通常你需要產生這次性能測試的 統計圖表,包括如下數據的圖表

  • rps , 每秒發送請求數

  • tps , 每秒接收響應數

  • eps, 每秒錯誤響應數

  • tops, 每秒超時請求個數

  • avgresptime, 每秒平均響應時長

這些統計數據, 都保存在項目的目錄中的數據文件里面。

只需要點擊 數據文件統計按鈕,然后選擇剛剛產生的數據文件(文件名就是當前日期時間),如下所示

image]

這樣,就會產生統計圖,如下所示

image

你可以點擊上圖箭頭處,將統計圖最終存為圖片,方便放到測試報告中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM