ares-client
ares-client可以理解為ares在被測模塊中的埋點,完成dump和replay過程在被測模塊裡需要執行的流程。ares-client由ares-client-base、ares-client-common、ares-client-target三部分組成:
ares-client的實現與業務無關,針對模塊間常用的交互方式以插件的形式進行擴展,例如HTTP交互、RPC框架、異步消息隊列等,在大多數場景下開箱即用,只需根據說明完成相關配置,埋點即可工作,數據dump和replay的過程對業務完全透明。
ares-client-base提供的基礎API可用來自定義埋點以豐富ARES的適用範圍,例如實際應用中可能需要dump模塊與緩存的交互數據(作為離線replay時的mock數據,replay過程就不依賴緩存了),那麼就用ares-client-base的API吧。
ares-server
ares-server是ARES服務端的核心模塊,也是唯一與使用者直接交互的模塊,定義了整個replay過程的用戶操作、完成replay過程的控制及結果展示。主要包括以下功能:
1.建立測試任務
2.管理測試case
3.完成測試環境部署與管理
4.測試結果的可視化展示
mock-server
mock-server是ARES的數據模塊,維護的數據主要包括:
1.線上請求的入口請求參數&返回值(生成case)、運行時配置信息(復原線上環境)、下遊接口調用參數&返回值&調用時間軸(作為mock數據)
2.回放測試產生的case返回值、下遊接口調用參數&調用時間軸
3.其他用來關聯數據、輔助測試的信息
將數據模塊作為ARES的獨立部分可以方便對數據的深度使用,除了目前提供回放、mock、diff使用外,還可進一步擴展出case篩選、修改、統計等功能;另一方面將數據的交互方式與ARES其他模塊解耦,例如將數據收集方式從目前的HTTP交互修改為基於flume的日誌收集,將不影響數據的使用。
diff-server
diff-server是ARES的測試結果分析模塊,完成線上dump數據與回放結果數據的比對與分析工作,主要的diff範圍包括:
1.被測模塊的返回值
2.被測模塊的下遊接口調用參數
3.被測模塊的下遊接口調用順序
如果一個模塊對上遊模塊提供的數據(返回值)、與下遊模塊的交互(調用順序與調用參數)未發生變化,或者說未發生我們預計範圍之外的變化,那被測項目的改動即測試通過。