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時重構了下代碼,把流程理清下:
這個是有朋友在github上提出來的,以前我是想不到有人會用這個工具來請求圖片,因此也沒關注這塊,不過有人使用,說明有需求(不止一人),因此實現了這個功能,若是response header有image/*
的話就直接展現圖片而不是圖片內容(一片亂碼)
短時間內仍是以增長測試新功能爲主,好比curl生成請求,請求生成代碼等,長期的一個是文檔,一個是Mock,開始根據需求來決定下一個模塊。
Github: https://github.com/brookshi/Hitchhiker, 以爲不錯的話麻煩 Star 支持下,謝謝。