《劉曉娟-百度單元測試智能生成實踐.pdf》由會員分享,可在線閱讀,更多相關《劉曉娟-百度單元測試智能生成實踐.pdf(26頁珍藏版)》請在三個皮匠報告上搜索。
1、百度單元測試智能生成實踐劉曉娟 百度演講嘉賓劉曉娟百度資深軟件工程師2014年加入百度,負責百度研究院CI工作。2017年擔任覆蓋率平臺技術負責人,從0開始構建了百度內部測試覆蓋率度量的工具體系及平臺。2018年負責了百度單測構建基礎設施的建設,注重單測提效,建設了精準單測及分布式單測。2022年底著手單測智能化生成,截止目前在百度內部已支持了top研發語言的單測生成,并廣泛落地在研發的日常研發工作中。目 錄CONTENTS1.背景介紹2.單測生成的探索3.百度單測智能生成的具體實現4.當前效果、挑戰和未來展望背景介紹:百度的單測PART 01背景介紹 單測保障代碼質量代碼提交代碼評審單元測試
2、(60%增量覆蓋率)P0 測試代碼掃描構建代碼合入.代碼檢查背景介紹 平臺化建設路徑全方位度量全自動執行智能用例生成全量覆蓋率增量覆蓋率用例結果自動配置自動用例選擇分布式執行人機交互執行反饋修復【書寫成本高】據調研,單測的研發時間約占總研發時長的30%50%【項目開發周期緊】來不及寫單測【影響研發迭代效率】單位時間內交互的需求變少UIAPIUTUIAPIUT背景介紹 單測推廣面臨的問題單測生成的探索PART 02傳統的單測生成 以追求代碼高覆蓋為目標,依托于代碼解析技術+遺傳變異算法,以追求代碼高覆蓋為目標 明顯的問題:1.代碼可讀性差2.斷言質量差3.生成性能差4.支持語言單一5.開發維護成
3、本高6.生成環境要求高百度單測智能生成的具體實現PART 03一、實現路徑單測模型數據提示詞單測模型數據提示詞產品化落地IDE人機交互產品化落地IDE人機交互工程化落地自驗證自修復工程化落地自驗證自修復用AI原生思想重構單元測試的生成單測模型:模型精調整體流程GitHub測試文件被測文件測試方法被測方法用例被測樣本均衡數據清洗映射數據處理模型精調文心代碼模型數據挖掘讓模型會寫單測,寫好單測單測模型:數據挖掘測試方法上下文測試方法體初始化調用屬性調用方法被測方法上下文類簽名構造函數簽名調用屬性調用方法簽名被測方法體屬性setter/getter包/命名空間包引用類型定義數據要完善,包含足夠的上下
4、文單測模型:數據處理數據清洗單測的基本結構斷言被測函數調用代碼格式無效注釋body體大小樣本均衡代碼復雜度單測框架Mock框架/業務代碼語言數據質量要高,要有各框架各場景用例書寫樣本單測模型:模型效果評估分支覆蓋運行通過無運行時錯誤無語法錯誤單測結構正確,有正確的斷言生成符合題意優點 定制性:滿足更多的書寫風格,支持特定框架及庫 生成能力:內容更豐富,mock處理更好 性能:響應更快缺點 多場景支持 用例的解釋能力評估指標:單測模型 提示詞遵循規則 與精調數據格式一致,提供足夠的上下文 在token限制范圍內自適應上文下提示詞 代碼解析獲取被測方法相關信息 根據優先級與token限制,構造提示
5、詞內容單測模型:提示詞【無上下文信息】被測方法內容幻想嚴重生成的用例只給出被測方法信息單測模型:提示詞【完善的上下文信息】被測方法生成的用例被測類及構造函數簽名入參相關方法簽名入參相關方法簽名內容書寫正確產品化:IDE人機協同模式發起用例生成提示詞構造模型推理內容解析上下文解析自適應機制IDE1.指定方法2.指定行數3.指定文件基本文件結構關聯關系用例review用例采納用例寫入包引入信息屬性信息測試套件信息已有用例文新用例文件工程化:批量可用用例生成用例生成用例執行結果判定基于規則修復基于模型修復驗證及修復自驗證自修復錯誤修復成功繼續修復是正確修復失敗否Run ResultSucceedCompile errorRunning errorAssert error系統庫第三方庫項目自身庫包引用錯誤當前效果、挑戰和未來展望PART 04當前效果 IDE編碼場景 覆蓋主流研發語言 覆蓋主流IDEIntellij 家族Vscode 落地全百度日常的研發工作當前效果 CR階段用例批量生成代碼提交代碼評審代碼合入單元測試(增量覆蓋率不達標).代碼檢查.Diff代碼用例生成修復挑戰 正確性的提升,更少的幻想 Mock技術的合理應用 斷言的正確性 高場景(分支)覆蓋的用例生成 多用例的寫入文件合并感 謝 聆 聽