對測試環境進行測試時,若是能使用線上環境真實的請求進行測試的話,是否是更好些
GoReplay 就能夠用來捕獲真實的HTTP請求,並進行回放
在線上環境中使用 GoReplay 來收集請求,能夠實時轉給測試環境,也能夠保存爲文件,而後拿到測試環境進行回放
GoReplay 在進行請求回放時,會模擬真實狀況,例如 request1 和 request2 間隔了 3 秒,回放時,也會保留這3秒的間隔,能夠準確呈現訪問的負載情況
GoReplay 收集請求時,能夠進行過濾,只收集本身關心的請求
回放時,還能夠調整速度,例如想以真實環境下的2倍速度進行壓力測試,設置一下回放速率便可
使用示例git
實時轉發github
例如 8000 端口運行的是線上系統,8001 端口運行的是測試系統
./gor --input-raw :8000 --output-http="http://localhost:8001"
把 8000 端口的請求都輸出到後面的地址
web
執行後就監聽並轉發,直到退出api
錄製回放瀏覽器
錄製
./gor --input-raw :8000 --output-file=requests.gor
--output-file 參數指定了保存到哪一個文件
執行後,就開始監聽記錄,直到退出
退出後,在當前目錄下生成了一個 requests_0.gor 文件
回放
./gor --input-file requests_0.gor --output-http="http://localhost:8001"
--input-file 指定要回放哪一個文件,後面跟上文件名
--output-http 就是要把請求發送到什麼地址測試
請求過濾url
例如只收集 /api 下的請求
./gor --input-raw :8080 --output-http staging.com --http-allow-url /api
例如只收集請求頭中符合 api-version 爲 1.0x 的請求
./gor --input-raw :8080 --output-http staging.com --http-allow-header api-version:^1\.0\dserver
回放速度調整文檔
例如使用2倍速度進行回放
./gor --input-file "requests.gor|200%" --output-http "staging.com"
安裝測試
下載地址
https://github.com/buger/gor/releases
下載並解壓 gor_v0.15.1_x64.tar.gz 後,是一個 gor 可執行文件,就能夠直接用了
爲了便於立刻實驗,GoReplay 提供了一個簡單的 web server
./gor file-server :8000
在瀏覽器中訪問 http://localhost:8000 能夠列出本地文件列表
使用這個server和不一樣的端口,就模擬出了不一樣的環境,方便實踐 GoReplay 的用法
官網 https://goreplay.org ,有詳細的使用文檔input