滴滴開源 | Rdebug:基於真實流量的研發、除錯、測試利器

滴滴技術發表於2019-05-06

出品 | 滴滴技術

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

前言:近日,滴滴在 GitHub 上開源後端研發、除錯、測試的實用工具 Rdebug,全稱 Real Debugger,中文稱作真 · Debugger 。使用真實的線上流量進行線下回放測試,提升研發效率、保障程式碼質量,進而減少事故。一起來具體瞭解吧。

▍背景

隨著微服務架構的普及和應用,一個複雜的單體服務通常會被拆分成多個小而美的微服務。在享受微服務帶來便利的同時,也要接受因為微服務改造帶來的問題:需要維護的服務數變多、服務之間 RPC 呼叫次數增加。

這就造成線下環境維護成本大大增加,其次線下環境涉及到的部門較多,維護一個長期穩定的線下環境也是一個挑戰;業務快速發展、需求不斷迭代,手寫單測又因複雜的業務邏輯以及複雜的服務呼叫需要 mock 多個下游服務,導致手寫和維護單測成本特別的高;手動構造資料,又不夠全面真實。以上問題都嚴重影響 RD 的研發效率,並且增加線上產生事故的隱患。

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

RD 迫切需要一個只需在本地部署程式碼、不用搭建下游依賴、使用真實資料,進行快速開發、除錯、測試的解決方案。Rdebug 基於流量錄製、流量回放的思路,能夠巧妙的實現上述方案。

宗旨

提升研發效率、降低測試成本、縮短產品研發週期,保障程式碼質量、減少線上事故。

使用

全景圖

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

▍全新的研發體驗

  • 只需部署模組程式碼,無需搭建下游服務;

  • 在 macOS 本地回放,開發、除錯、測試無需登入遠端伺服器;

  • 流量錄製支援常用協議,FastCGI、HTTP、Redis、Thrift、MySQL 等;

  • 回放速度快,單次回放秒級別。


錄路徑重定向

為了方便 RD 在本地開發、測試,Rdebug 支援路徑重定向。

當線上部署路徑和原生程式碼路徑不一致時,當程式碼中存在大量線上路徑硬編碼時,無需入侵式修改程式碼,只需要簡單的配置即可實現路徑重定向。

即程式碼可以存放在任何路徑下回放。

時間偏移

流量回放時會自動把時間偏移到流量錄製的時間點。

在程式碼中獲取時間時,會獲得錄製時間點之後的時間。所以,當業務介面對時間敏感時,也無需擔心。

檔案 Mock

流量回放支援檔案 Mock,指定檔案路徑和 Mock 的內容,即可快速實現檔案 Mock。

結合錄製上報功能,線上上上報配置讀取,線上下使用檔案Mock實現配置“重現”。

▍Elastic 搜尋

對儲存在 Elastic 中的流量,支援 URI、輸入輸出關鍵詞、下游呼叫等多維度搜尋。

回放支援指定檔案,也支援上述搜尋回放,使用體驗更佳。

▍Xdebug 除錯

最高效的功能是 Xdebug 聯動除錯,通過對程式碼設定斷點即可使用線上流量進行除錯。通過這種方式,可以用來研究程式碼、排查問題、檢視下游介面響應格式及資料等,是一個開發除錯利器。

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

豐富的報告

回放報告,彙匯流排上線下的輸入、輸出、結果對比,一目瞭然。

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

下游呼叫報告,會列舉出所有的下游呼叫,包括協議、請求內容、匹配上的響應以及相識度。通過不同的背景顏色,標記出完全匹配的流量、存在噪點的呼叫、缺失的呼叫、新增的呼叫等。

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

結合 Xdebug 生成覆蓋率報告,能夠清楚的看到哪些程式碼被執行、哪些程式碼未被執行以及介面的覆蓋率情況。

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

有關安裝、使用過程以及常見問題解答,請檢視以下連結:

GitHub:github.com/didi/rdebug

Wiki:github.com/didi/rdebug…

Documentation:github.com/didi/rdebug…

同時歡迎加入「Rdebug 使用者交流群」

請在滴滴技術公眾號後臺回覆「Rdebug」即可加入

END

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器

掃碼關注“滴滴技術”公眾號,獲取更多最新最熱技術乾貨!定製禮品不定期奉上!

滴滴開源 |  Rdebug:基於真實流量的研發、除錯、測試利器


相關文章