1、汽車數字轉型下的智能精準測試李柯李柯目前主要負責精準測試在DevOps的開發和落地、自動化測試工具的開發,并推動自動化測試的廣泛應用,以確保極氪軟件質量的高水平高質量交付。極氪智能科技數字質量中臺技術負責人嘉賓照片目錄CONTENTS背景、要解決的問題01 解決思路/方案/框架02 具體解決方法、技術實踐03 落地效果與總結、啟發04 展望未來05 01議題背景01DevOps成熟度02功能測試03自動化測試04測試結果度量車企軟件測試的思考.車企DevOps成熟度不比互聯網企業,且DevOps工具和方式多種多樣,難以統一測試人員依靠經驗和需求變更相關文檔,很難準確判斷需要測試的范圍自動化測試
2、代碼編寫維護成本高,用例全量回歸的也會造成大量資源浪費線上Bug逃逸率具有一定的滯后性,需要一種更能提供質量信心的方式量化測試結果02整體解決方案解決方案自動化測試:從測試框架和測試工具入手,降低自動化測試用例編寫成本DevOps成熟度考慮:優化DevOps流程,減少依賴流程節點;支持多樣化的DevOps接入方式測試結果度量:對測試結果追根溯源,保證軟件測試結果可觀測、可優化測試范圍定位:定位迭代測試范圍,依賴服務源碼分析,圈定迭代變更影響面,后續執行關聯的自動化測試DevOps多樣化測試流程接入不同的業務部門會有不同的DevOps流程和工具,我們可以將自動化測試或者功能測試作為質量管理和控制
3、的一個節點,解耦測試與DevOps的綁定關系同時中間件服務對不同測試源的接口進行包裝,便于后期對測試數據的統一收集管理自動化測試雖然有很多可視化拖拉拽的自動化測試工具,但是靈活度不足,且維護成本稍高,所以選用以代碼來測代碼的形式來做自動化測試。和服務開發人員采用相同的工作流,搭配測試開發的腳手架、工具,形成統一的編碼標準在代碼層面我們可以通過外掛Hook等多種方式對已有的功能強化升級精準測試 精準用例召回:創建并維護全面的測試用例庫,當代碼變更時,根據變更內容與已有用例的匹配程度,精準召回需要執行的用例 代碼覆蓋率和Bug追蹤的測試結果量化,讓測試結果更加明了,同時也更加趨向真實情況。配合測試
4、報告和數據分析,量化結果,供開發者和決策者參考解決方向自動化測試,減少回歸測試成本精準化測試,測試人員能準確知道哪里需要測試DevOps接入方式支持多樣化接入測試工作流自動化測試框架工具,自動生成用例提 效降 本代碼覆蓋率分析,校驗測試結果精準化用例召回,減少重復測試03具體方法與技術實踐流程設計DevOps接入質量流程多樣化,支持工作流觸發、平臺觸發、WebHook觸發精 準 分 析工作流發布觸發精準分析代碼變更影響面集 成 測 試代 碼 覆 蓋D e v O p s集成測試包含:功能測試、自動化測試、以及代碼變更影響面召回的自動化測試用例的執行代碼覆蓋率的收集與分析。包含功能測試、單元測試
5、、自動化測試的覆蓋率的分析與匯總精準測試工作流精準測試自動化用例代碼覆蓋率單擊此處添加文本具體內容,簡明扼要的闡述您的觀點。精準分析添 加 標 題單擊此處添加文本具體內容添 加 標 題單擊此處添加文本具體內容精準分析3241DevOps:服務發布,觸發質量節點影響面分析:根據服務發布的代碼Diff信息,結合調用鏈數據,分析代碼影響面動態調用鏈分析:Agent插樁,收集并上報接口請求處理的代碼調用鏈關系,用以補充靜態調用鏈分析。靜態調用鏈分析:基于Antlr、AI CodeBase等工具和方式,實現多語言靜態源碼分析,構建源碼AST精準分析服務通過DevOps工作流,觸發精準測試并通知到自動化測
6、試平臺,平臺根據服務源碼信息,依賴Antlr分析靜態調用鏈關系,構建語法樹。12ByteBuddy對所有業務類字節碼增強,創建一個管理器,將每次請求內存堆棧中的函數調用信息發送到自動化測試平臺3通過Diff本次發布和上次發布的代碼變更信息,依賴靜態語法樹分析,獲取本次變更改動到的代碼變更的方法,并集合整個項目的語法樹,向上回溯被調用的方法,最終獲取到代碼變更影響面。自動化測試自動化測試框架:封裝高級方法和通用用例,降低開發成本自動化測試工具:錄制測試腳本,轉化為自動化測試用例測試用例平臺化:平臺化維護自動化測試用例,在線執行用例測試用例解析:解析測試用例,建立用例和錨點的關系自動化測試框架Ze
7、stEngine基于Pytest Pluggy 插件系統開發的自動化測試用例管理SDK編碼風格、項目結構的標準化測試用例在本地調試,遠程同步如何和精準測試流程對接CLI Toolkit用例元數據索引語法檢查測試報告生成平臺側數據交互測試用例同步和運行組件自動化測試用例自動化測試用例的語法樹構建依賴以下能力:1.Pytest用例收集與管理2.Python語法樹3.Anchor記錄及分析工具自動化測試用例庫 自動化測試用例解析 創建測試用例索引 入庫自動化測試用例精準召回依賴源碼分析獲取到的影響面,與自動化測試用例庫索引數據,根據變更影響面反向查詢測試用例創建精準測試單,關聯索引的測試用例監控服務
8、active狀態,等待業務服務啟動完成服務啟動之后,自動化測試平臺開始執行精準測試單輸出自動化測試報告自動化測試工具ZToolsGUI應用程序1抓取Chromium、FireFox等瀏覽器請求,解析請求數據,關聯測試場景,生成標準格式化的自動化測試用例。2將自動化測試用例寫入本地自動化測試項目,提交Git倉庫并Push到平臺進行自動化測試用例解析3自動化測試工具ZTools1.邏輯處理將測試場景中的所有請求按順序列出來假設當前接口的入參依賴前面接口的數據,那么在構建當前接口請求數據時,需要遍歷之前的接口,比對與當前接口請求字段名和字段值相同的數據,并獲取取其值的字段路徑。如果獲取不到,則可以處
9、理隨機值或固定值生成自動化測試用例2.集成AI能力代碼覆蓋率代碼覆蓋工具集成:Agent代理工具,負責建立并維護業務系統與測試平臺的長鏈接,支持全雙工的通信模式。代碼覆蓋操作執行:on-the-fly模式的代碼覆蓋率執行操作,在服務運行過程中動態收集代碼覆蓋率。Agent支持多種語言的代碼覆蓋率工具,以JaCoCo為例:Agent根據服務端請求的開始收集、結束收集等命令,執行清除覆蓋率文件或上傳覆蓋率文件等操作。代碼覆蓋文件收集與分析:全量+增量代碼的覆蓋率收集。測試平臺會維護了服務迭代發布記錄,依賴服務發布記錄和服務的精準分析,平臺可以做到全量和增量的代碼覆蓋率收集與分析。同時支持手動測試、
10、自動化測試、以及單元測試的代碼覆蓋率收集。未覆蓋代碼處理:未覆蓋的代碼會結合服務的源碼分析,輸出未覆蓋的錨點,給測試人員完善測試質量提供方向。同時,我們也在探索借助AI能力,生成未覆蓋的方法的單側用例04落地效果與總結落地效果及總結精準測試項目旨在幫助極氪各IT測試團隊能快速識別變更影響,并發現在業務接口測試過程中未覆蓋的接口和代碼信息,從而使得測試過程更加精準,減少遺漏的測試場景,提升代碼質量測開比從1:3到1:5自動化測試工具提效60%Bug逃逸率降低到1.03%代碼覆蓋率90%接口覆蓋率100%提效降本精準分析和代碼覆蓋率功能幫助測試團隊發現未被測試覆蓋的方法,并對其進行有針對性的測試驗
11、證,最終使BUG逃逸率從2%降低到1.03%,代碼覆蓋率從35%提升到90%。提高軟件質量精準召回自動化測試用例,大大降低了手動回歸測試的時間成本。同時與接口自動化工具集成,直接生成自動化測試用例,進一步節省了測試人力成本。提高測試效率05展望未來未來.已來平臺迭代:測試用例優先級排序:根據業務影響、變更頻率、故障歷史等因素,為測試用例設定優先級,優先執行高優先級的測試用例。測試用例的風險評估:通過對歷史測試數據的分析,對每個測試用例的風險進行評估,比如可能導致嚴重故障的概率等,用于指導測試的執行AIGC:輔助自動化測試用例和單元測試用例生成測試結果進行深度分析,精準預測可能的風險點和故障點,提前進行針對性測試,提高測試效率。分析軟件的缺陷,給出提供修改建議學習軟件的使用模式和異常行為,自動生成并執行測試用例,提高測試的效率和覆蓋率。感謝聆聽企微:極氪-李柯