《A1--王海兵--基于流量回放的自動化回歸測試平臺AREX探索實踐.pdf》由會員分享,可在線閱讀,更多相關《A1--王海兵--基于流量回放的自動化回歸測試平臺AREX探索實踐.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、基于流量回放的自動化回歸測試平臺AREX探索實踐攜程 王海兵目錄CONTENTS背景01 自動化測試探索02 AREX 體系與技術實現03 AREX 效果與展望04 01背景資源有限,質量無限回歸測試工作量大業務越來越復雜,驗證點的超級多變更影響范圍未知,全量回歸測試或抽樣驗證快速迭代難以應對測試用例維護成本高測試工具和用例越多維護越難(維護成本)測試數據維護量大(環境數據穩定性)自動化用例執行與管理(測試管理成本)背景-研發測試團隊的效能困境研發測試團隊面臨的問題02自動化測試的探索實踐探索:自動化測試的探索與實踐錄制回放場景數據場景環境與監控接口流量回放工具,全鏈路壓測工具,前端流量回放工
2、具,用戶行為監控調試回放測試數據構造工具,接口MOCK平臺,數據庫導入和脫敏工具,業務數據鏡像工具等基準測試環境治理,無線設備和虛擬機環境治理,生產業務監控,日志監控,性能監控236攜程自動化測試的探索測試度量場景代碼層場景功能測試覆蓋率,自動化測試覆蓋率,覆蓋前后端的增量代碼行覆蓋率,精準測試,用例分級分類單元測試代碼生成,基于SonarQube的自定義規則庫,重復代碼和無效代碼跟蹤,基于SonarQube API的二次分析等54測試用例場景1可視化接口測試平臺,接入CICD,打通中間件和各中臺,定制化的通用測試平臺。自動化測試,提升了測試覆蓋率和執行效率測試覆蓋率和執行效率,配合了DevO
3、PS快速迭代快速迭代,保證了產品發布的品質。我們一定要去解放測試工程師我們一定要去解放測試工程師1.測試范圍 越來越大2.回歸測試用例和數據維護 與日俱增3.快速迭代快速發布 要求越來越高4.人力資源得不到更好的補充自動化測試下測試團隊壓力的提升自動化測試下測試團隊壓力的提升探索:自動化測試的探索與實踐自動化測試與能力提升軟件項目隨著規模增大,產生滾雪球效應滾雪球效應自動化已經成為主流,是必需品,也是奢侈品奢侈品自動化測試投入成本增幅遠高于開發成本增幅探索:自動化測試的探索與實踐滾雪球效應用生產真實請求與數據,進行全量的自動化回歸測試回歸測試用例和數據不維護,全自動執行 新功能測試用例在測試環
4、境固化,補充新的回歸測試用例降低滾雪球效應的影響,固定回歸測試的人力和時間成本探索:自動化測試的探索與實踐AREX 測試平臺的產生與愿景03AREX 體系與技術實現AREX=生產環境流量數據錄制測試環境流量數據回放新舊版本差異比對+AREX 體系與技術實現AREX 的體系結構普通請求AREX 錄制AREX 回放AREX 體系與技術實現AREX 錄制回放的基礎原理AREX AGENT 技術棧1AREX 技術實現與優化 技術挑戰ForkJoinPool對ForkJoinPool 的任務單元ForkJoinTask 進行了修飾,采用 WeakCache 做數據緩沖,可以保證任務生成和執行線程之間的
5、Trace 傳遞。Java Executors修飾 Runnable,Callable,代碼修飾各種線程池,把 Runnable、Callable 替換掉。Wrapper 內部通過TraceTransmitter 保證 Trace 的正確傳遞。因多線程和異步實現,導致調用鏈丟失。Asynchronous以 Apache Async Client 為例,是以固定運行的線程監聽響應,并發起 Callback,AREX 實現調用、監聽、回調整個流程中多個跨線程的 Trace 傳遞。調用鏈丟失2AREX 技術實現與優化 技術挑戰解決方案流行的組件往往存在多個版本同時在不同的系統中使用,不同的版本實現方
6、式差別可能很大,甚至不兼容版本管理3AREX 技術實現與優化 技術挑戰AREX 提供多個版本的支持(如 Jedis),在這些類加載前識別出應用依賴的組件版本,從而在類加載時進行版本匹配,保證正確注入代碼。解決方案為了系統的穩定性,AREX Agent 的框架代碼是在一個獨立 Class loader 中加載,和應用代碼并不互通。為了保證注入的代碼可以在運行時被訪問,對 Class Loader 進行了簡單的修飾,保證運行時的代碼會被正確的 Class Loader加載。代碼隔離4全文:http:/ 技術實現與優化 技術挑戰很多業務系統是時間敏感的,不同時間訪問會得到不同的結果。時間問題5ARE
7、X 實現了 Mock 時間的功能。在數據采集時,針對每個用例記錄當前時間;在回放時,對”System.currentTimeMills()”方法進行代理計算多次訪問的時間差(System.nanoTime)保證時間的準確性(仍然可能存在毫秒級的差距)解決方案AREX 技術實現與優化 技術挑戰AREX 支持了本地緩存數據的采集和 Mock 功能,只需要進行一些簡單的配置,即可實現數據的自動采集和 Mock,此功能也可支持各種內存數據的 Mock 功能。AREX 技術實現與優化 技術挑戰緩存問題6解決方案業務應用中可能使用了各式的緩存來提升運行時的性能,不同的環境這些數據可能存在較大的差異。ARE
8、X 采用 Byte Buddy 實現了無代碼侵入的數據采集和自動化 Mock,測試運行代碼集中在待測應用,完美支持了寫接口的測試(如核心交易系統、庫存系統等),不會產生真正的外部交互,比如 DB 的寫入,第三方服務的調用。AREX 技術實現與優化 實用場景寫接口測試1生產環境出現問題后,因版本差異,環境數據差異等問題,開發定位問題成本高,效率低。本地回放,Debug 生產問題強制錄制,Mock 所有外部依賴調試完成返回響應報文AREX 技術實現與優化 實用場景生產問題快速定位2預分析降噪和預期配置 將錄制流量的生產版本發布到測試環境,對此版本進行回放并比對其差異,得到“噪聲”點 噪聲點生成自動
9、標記過濾點;與人工標記過濾點差異化展示;用戶可觀察可刪除。用戶可手動觸發預分析降噪。支持用戶預期配置(代碼模式和配置模式)問題:回放噪音和新功能變更影響 時間和時間戳字段 UUID 字段 新需求更新帶來的結構和數據的變更(比如 Schema 更新、請求項變更等)AREX 技術實現與優化能力優化升級能力優化升級數據脫敏(隱私數據可靠保護)AREX 存儲數據脫敏 錄制數據用戶自定義脫敏 報告中字段可配置脫敏 報告中字段用戶自定義脫敏AREX 技術實現與優化場景擴展(應用場景多樣性)錄制場景標簽 回放場景標簽關連 生產錄制數量和并行錄制限制能力優化升級02測試報告同類聚合(降低排查成本)對一個錯誤的
10、 Case Link 分類:將比對差異進行分類,輸出 Category、Error Code。測試報告將 Category,Error Code 和接口三個維度聚合,統一展示。分析服務(深度分析用例,開發中)用例唯一性分析 用例測試與被測試代碼的調用鏈分析 變更與比對差異的關聯性分析AREX 技術實現與優化優化后AREX的能力組成AREX=生產環境流量記錄+數據記錄測試環境流量回放+數據MOCK新舊版本差異比對+算法智能識別過濾+AREX 技術實現與優化04AREX 的效果與展望1.公司內大范圍接入,有效提升了回歸測試效率、質量和測試覆蓋率2.測試左移,軟件提測質量大幅提升3.固定了測試成本,
11、釋放測試資源,增加了新功能測試的投入和深度4.對快速迭代 快速發布有效的支持5.接入 CI/CD,已經實施 100%AREX 回歸測試通過率才能發布上線AREX 自動化測試的效果與展望AREX 在攜程研發的實施效果測試知識庫 錄制用例數據是 AREX 最核心的資源 請求應答依賴包含在錄制信息中 功能測試用例生成 依賴關系分析 業務調用分析代碼知識庫 代碼與用例的關系庫 新鮮可雙向追溯 靜態和動態調用鏈分析 代碼變更分析,獲取存在變更的方法集 結合調用鏈和變更方法集,識別差異與變更的關聯可擴展的 AREX 分析服務AREX 自動化測試的效果與展望AREX 理想的回歸測試場景 AREX 是測試與質
12、量的銀彈嗎?I.經過驗證的解決方案II.AREX 前期有學習和接入成本III.AREX 有持續的維護成本 AREX 只是回歸測試工具嗎?I.是接口回歸測試工具II.也是產品與測試知識庫生產錄制用例測試環境回歸測試功能測試/修復測試發布前全量回歸測試替換補充失敗用例AREX 自動化測試的效果與展望積累知識 擁抱變化AREX=生產環境流量數據記錄測試環境流量數據回放新舊版本差異比對+算法智能識別過濾+質量知識庫測試用例輸出 插件廢棄代碼掃描 插件精準測試 插件AREX 自動化測試的效果與展望AREX面臨的更大挑戰易用性擴展性(架構與能力)生態建設AREX 自動化測試的效果與展望感謝聆聽關注QECon公眾號