月光寶盒(vivo流量錄製回放平臺)正式對外開源
來源:vivo網際網路技術
作者:vivo 網際網路伺服器團隊- Liu Yanjiang
月光寶盒是一個基於流量錄製回放的自動化測試平臺,透過錄制回放取代編寫指令碼進行自動化迴歸,提升測試效率和覆蓋率。因為其解決方案具有很強的通用性,所以我們把這它開源出來,希望能幫助到有需要的使用者。
一、月光寶盒 是什麼?
Moonbox(月光寶盒)是 JVM-Sandbox 生態下的一款流量錄製回放產品。所謂流量錄製回放是服務端透過掛載agent探針自動註冊到服務端,攔截服務端呼叫,將所有外部呼叫依賴的內容(如資料庫、分散式快取、外部服務響應等)進行完整記錄形成錄製流量。其核心價值是透過錄制流量資料,將流量資料轉化成可複用、可執行的自動化用例,快速在測試環境中進行回放比對介面返回值和外部呼叫依引數(見下圖)。Moonbox(月光寶盒)提供了大量的常用外掛,能夠對常見的中間呼叫進行錄製回放,同時也提供了非常可靠、高效能的資料儲存、計算能力。
二、月光寶盒 有哪些優勢?
正如開頭所說月光寶盒是一款面向測試、研發工程師使用的低門檻、高效能、更易於使用的自動化測試工具。這款產品已經在vivo執行了2年多了,經過我們持續最佳化、打磨擁有很多實用、易用功能。它的優點主要體現在下面幾方面:
2.1 全面視覺化視操作(部分功能)
(1)基於任務、介面維度的流量管理能力
(2)詳細的流量展示細節(請求、響應、子呼叫)
(3)基於任務、介面維度的回放資料管理,疊加各種維度統計、查詢能力
(4)易於人工分析的回放比對結果和差異展示
2.2 豐富的外掛支援
月光寶盒支援非常多元件錄製和回放能力,基本上能滿足絕大多數人訴求。
2.3 多種部署方式
Docker:這種方式簡單、可靠,讓您可以摒棄複雜的環境配置和安裝,快速在本地體驗我們專案。
常規方式:這種方式複雜、步驟繁瑣,需要按照步驟建立ES和MySQL資料庫,初始化資料表,更新好應用配置,安裝好前端node服務。
此外月光寶盒是前後端分離專案,當您使用該專案需要分別部署前端、後端,非常有助於您後續將專案部署到生產環境。
2.4 效能安全可靠
平臺對效能進行了長期最佳化,在vivo內部歷經多個高併發系統驗證。我們對agent端錄製流量進行了一系列安全防護,例如對相同介面同時只能有一個進入取樣中,限制並行錄製介面數量。服務端使用了ES儲存流量,有效提升了資料儲存規模。
三、月光寶盒 實現原理
3.1 整體架構
月光寶盒平臺分為2個部分,分別為moonbox-agent 和 moonbox-server(整體架構如下圖所示)
moonbox-agent
使用Java-attach技術(實際的動態位元組碼增強由JVM-Sandbox實現)動態代理到目標程式上,提供流量錄製和回放的增強。
moonbox-server
Agent端使用介面,提供配置查詢、錄製流量儲存、流量查詢、回放結果儲存等服務
錄製任務/回放任務的配置,agent任務遠端管理能力和管理後臺操作介面(前後端分離部署)
3.2 流量錄製&回放
流量錄製
核心邏輯是將agent分發到使用者填寫的機器上(本地、遠端機器),然後將agent attach到使用者填寫應用所對應的正確程式上去。然後透過JVM-Sandbox的BEFORE、RETRUN、THROW事件機制攔截關鍵呼叫位置獲取流量入參、出參。整體流程見下圖整體流程見下圖:
流量回放
核心邏輯是將agent分發到使用者填寫的機器上(本地、遠端機器),然後將agent attach到使用者填寫應用所對應的正確程式上去,agent啟動後從服務端不斷拉取流量去分發到對應介面做回放,整體流程見下圖:
心跳管理
Agent啟動後會單獨開啟執行緒固定間隔時間透過http請求給服務端上報心跳
3.3 Agent啟動過程
執行指令碼將sandbox agent attach到目標java程式上,sandbox 啟動jetty服務,載入moonbox module,然後從服務端拉取moonbox配置,載入流量錄製和回放外掛。
四、 和 jvm-sandbox-repeater 關係?
Moonbox是基於jvm-sandbox-repeater重新開發的一款流量回放平臺產品。在jvm-sandbox-repeater基礎上重寫了很多模組,並提供了更加豐富功能,同時便於線上部署和使用,和jvm-sandbox-repeater差異如下:
五、為什麼要開源?
流量錄製回放技術複雜,挑戰較高,開源社群雖然有很多類似產品但是在易用性方面都有一些欠缺,我們希望透過開源月光寶盒幫助對該方向有興趣的開發者快速構建自己的自動化工具,同時可以基於我們這款產品制定個性化訴求。此外,月光寶盒本身也借鑑了jvm-sandbox-repeater設計和方案,是開源的受益方,現在我們將自己思考和探索回饋給開源社群,豐富流量回放開源技術生態。除此之外透過社群中開發者的使用,也可以幫助我們更好的改進我們的工具,獲得更多的需求場景輸入,也能讓該工具獲得更加長遠的發展。
六、Roadmap
月光寶盒已經完成V1.0.0版本開源,初步完成了各項重要功能開源,後續我們會持續性的完成平臺效能、體驗最佳化工作,同時積極收集社群使用反饋的功能需求,將一些好的需求納入我們版本計劃裡面。2023年我們規劃了一些迭代版本,如下圖所示:
七、寫在最後
今天月光寶盒的開源只是我們邁出的一小步,後續我們會持續按照計劃向社群貢獻版本和特性。如果您對月光寶盒有興趣,歡迎體驗我們開源產品。如果您有問題或者更好的方案,歡迎向我們開源專案貢獻反饋ISSUE和貢獻PR,這將是我們莫大的榮幸。
GItHub專案地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2944057/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【穩定性平臺】GOREPLAY流量錄製回放實戰Go
- 流量錄製與回放在vivo的落地實踐
- 流量錄製回放工具jvm-sandbox-repeater入門篇——錄製和回放JVM
- NVR接入錄影回放平臺EasyCVR影片融合平臺語音對講配置VR
- 流量回放系統的設計與實現--流量錄製模組
- 訂單流量錄製與回放探索實踐|得物技術
- 流量錄製回放工具jvm-sandbox-repeater入門篇——服務部署JVM
- Unity下Bug修復神器InjectFix正式對外開源Unity
- 【營】在開局,提升【豹】發力 - vivo活動外掛管理平臺
- 免費使用! 金山雲圖片 / 視訊評測-魔鏡平臺正式對外開放
- 360BugCloud開源漏洞響應平臺正式上線GCCloud
- 【月光寶盒get√】用時間置換空間,聊聊稀疏陣列的那些事兒陣列
- 12.3 實現模擬滑鼠錄製回放
- 通用流量錄製回放工具 jvm-sandbox-repeater 嚐鮮 (四)——新版帶介面 console 的使用JVM
- UI 自動化錄製與回放系統UI
- J2PaaS 低程式碼平臺,正式釋出開源版!
- 京東正式入駐抖音平臺:短影片流量池對電商行業有多大價值行業
- 開源工具、平臺列表開源工具
- 外鏈交換平臺推薦:選擇最佳平臺,高效獲取外鏈資源
- Uber 宣佈開源 Plato 人工智慧對話平臺人工智慧
- 阿里巴巴雲原生大資料運維平臺 SREWorks 正式開源阿里大資料運維
- 錄製回放模式建立測試用例 - Katalon Studio模式
- vivo推送平臺架構演進架構
- 淘寶流量下滑,商家如何應對?
- 外貿郵件推送平臺,外貿開發信郵件推送平臺,外貿EDM推送平臺,如何選擇?
- 開源物聯網平臺和智慧家居平臺
- 開源測試平臺--MeterSphere
- 自動化測之各流量回放技術工具對比
- 如何讓線上錄製回放落地的具體思路
- AiDex Sharp快速開發平臺開源AIIDE
- “淘寶” 開放平臺介面設計思路
- 重磅丨科技教育公司“好未來”正式對外開源高效能PHP框架FendPHP框架
- 開源對映平臺Mapzen加入了Linux基金會的專案Linux
- WGCLOUD 叢集監控平臺 v2.1,正式釋出原始碼,支援開源GCCloud原始碼
- BSN正式釋出開源外掛DDC保管箱
- 直播帶貨平臺開發流量體現是重中之重!
- 錄製回放效果差異檢測 | 自動化測試
- NFT交易平臺定製開發|NFT交易平臺專案搭建