開源API測試工具 Hitchhiker v0.6更新 - 改進壓力測試

Hitchhiker 是一款開源的支持多人協做的 Restful Api 測試工具,支持Schedule, 數據對比,壓力測試,支持上傳腳本定製請求,能夠輕鬆部署到本地,和你的team成員一塊兒協做測試Api。html

詳細介紹請看: doc.hitchhiker-api.com/cn/introduc…git

在線體驗: www.hitchhiker-api.com/, 能夠用 try without login 來免登陸使用 (在線演示不支持壓力測試和上傳js,虛擬機單核的,撐不住)。github

下面來看看此次的更新:

重寫壓力測試

Hitchhiker 以前的壓力測試節點是一個基於Go的 Hitchhiker-Node,早期階段Hitchhiker的腳本功能並不複雜,不支持上傳js庫,async/await,以及文件讀取保存等,而Go的高併發很是有吸引力,作了下調研後,使用otto作爲js解釋器,是能夠知足那時的腳本運行邏輯的,因此選用了Go作壓力測試的節點,在早期是夠用的。web

後來Hitchhiker開始支持更多複雜的腳本功能,好比自定義js庫,由於npm裏的不少js庫都基於Nodejs,而目前的Go以及otto知足不了這種需求,除非再加一個Node進程來執行腳本,然而這樣又過於複雜,還不如直接使用Nodejs來寫,因此綜合考慮後仍是使用Nodejs重寫了壓力測試點。npm

重寫以後的壓力測試是集成在Server一塊兒的,也就是不用再部署其餘的程序,並且支持現有全部的腳本功能。api

兩種方法的優劣:

Go的高併發以及goroutine使得寫起這種壓力程序時很是之輕鬆,性能也頗有保障,缺點仍是在於Hitchhiker的腳本是js,因此Go執行這些腳本比較費勁,也所以目前基於Go的壓力點不支持Hitchiker腳本的高級特性。瀏覽器

Nodejs寫這種壓力測試程序就比較費勁,須要本身管理多進程,以及進程間通訊,還無法精確控制1秒的請求數,也就是壓力測試的參數QPS對Nodejs的壓力點是沒用的,不過好在Hitchhiker Server也是基於Nodejs的,因此能夠重用請求處理的邏輯,並且Api的壓力測試本質上是高IO的,因此Nodejs的性能也很不錯。不過Nodejs的程序目前還不支持分佈式,稍後會加上去,主體功能已經完成。websocket

稍微比較了下二者的性能,在單機上基本旗鼓至關。併發

目前是以基於Nodejs的版本爲默認的,也能夠選用Go的,不過Go的暫時會中止維護,除非Go有了基於Node的js解釋器,那時再考慮移回來。curl

圖片

從新整理請求流程

以前的請求流程有點亂,致使有些問題不容易發現,好比環境變量沒應用到Test腳本里,因此在改這個bug時重構了下代碼,把流程理清下:

圖片

response 展現圖片

這個是有朋友在github上提出來的,以前我是想不到有人會用這個工具來請求圖片,因此也沒關注這塊,不過有人使用,說明有需求(不止一人),因此實現了這個功能,若是response header有image/*的話就直接展現圖片而不是圖片內容(一片亂碼)

修改Bug

  1. global function 裏的內容在切換模塊後會消失
  2. schedule裏的請求返回是圖片時,會形成JSON.parse失敗,致使異常,改了圖片只保存連接,不保存內容
  3. 瀏覽器裏壓力測試的websocket有時會失敗,加了重試
  4. schedule的定時跑的記錄會有1分鐘左右的偏差
  5. 改請求的method時name會被重置

後續計劃

短時間內仍是以增長測試新功能爲主,好比curl生成請求,請求生成代碼等,長期的一個是文檔,一個是Mock,開始根據需求來決定下一個模塊。

Github: https://github.com/brookshi/Hitchhiker, 以爲不錯的話麻煩 Star 支持下,謝謝。

相關文章
相關標籤/搜索