《周海蓮-基于AIGC的螞蟻新一代測試用例自動生成技術.pdf》由會員分享,可在線閱讀,更多相關《周海蓮-基于AIGC的螞蟻新一代測試用例自動生成技術.pdf(23頁珍藏版)》請在三個皮匠報告上搜索。
1、AI*軟件研發數字峰會NDD*software DeveAIAI驅動軟件研發softwareDevelopment全面進入數字化時代Digital中國深圳11.24-25summit基于AIGC的螞蟻新一代測試用例自動生成技術周海蓮螞蟻集團#page#KEYLINK科技生態圈峰會+深度研習ing1000+技術團隊的共同選擇深圳站上海站K+峰會K+每合密K+峰會K+全球軟件研發行業創新峰會K+全球軟件研發行業創新峰會會議時間:2024.05.24-25會議時間:2024.09.20-21G會北京站深圳站深圳站NDD峰會NDD峰會NDD峰會NDD峰會AI軟件研發數字峰會AI軟件研發數字峰會AI軟件
2、研發數字峰會2024.07.19-20會議時間:2024.11.15-16會議時間:2023.11.24-25會議時間:#page#演講嘉賓周海蓮(花名:慕藍)螞蟻集團平臺工程與技術風險部高級技術專家目前主要負責測試用例自動生成方向。畢業后曾就職于百度、阿里、螞蟻,負責過搜索系統、廣告系統的質量保障和質量平臺研發。2020年以來加入螞蟻,負責測試用例自動生成方向,孵化出智能單元測試用例生成產品SmartUnit,在螞蟻集團、阿里集團的多個BU中使用并取得優秀落地效果。2023年開始探索基于AIGC的新一代測試用例生成技術,并在螞蟻內部實踐落地NIDDAI軟件研發數學峰會AI驅動軟件研發全面進入
3、數字化時代#page#AI*軟件研發數字峰會NDD1.測試用例生成的技術演進2.目錄現有技術的問題和痛點3.基于AIGC的螞蟻新-CONTENTS自動生成4.總結與展望#page#AI*軟件研發數字峰會NDDPART 01測試用例自動生成的技術演進#page#測試用例自動生成【測試智能化】人工手寫大量測試用例一極致用戶體驗的用例編寫方式:秒級智能生成高覆蓋率、高有效性的測試用例理想中的測試用例實際中的測試用例各階段修復問題成本單測量級大無有效AssertmmMOCK成本高變更修正用例量級大運維吃力歷史負債Google測試金字塔B測試用例的開發運維成本實際項目中測試占比Unit0%ADDAI軟件
4、研發數字會AI驅動軟件研發全面進入數字化時代tpigital#page#技術演進路線發展歷史優勢不足技術方向1988年,FuzzGenerator首次被提出,用于測試Unix程序的健壯性,通過構Fuzzing在安全領域獲得了非覆蓋率不夠好、生成常好的發現漏洞效果用例量過大造大量測試輸入從而發現軟件漏洞模糊測試2013年,Fuzzing技術迎來分水嶺:AFL,首次采用通過插樁獲取代碼覆蓋從Fuzzing而引導Fuzzing的方式。這一技術隨后被應用至測試用例生成領域1976年,SymbolicExecution的概念首次被提出,通過解析程序的路徑,用存在路徑爆炸、約束對能夠求解出的路徑,可以精準
5、命中分支符號模擬通過路徑并獲得輸出。求解復雜等問題,單基于符號執行一的符號執行技術難2006年,研究人員提出了一種”先進行符號執行,后根據符號執行結果生成Symbolic Execution測試用例”的執行生成測試技術,這項技術后來發展出了用于檢測Linux內核以實現測試用例生成錯誤的KLEE。1990年,B.Korel提出了使用動態數據流分析的技術進行路徑覆蓋,這是基于可擴展性高,可以應用多種隨機性高基于搜索搜索的測試用例生成的初始想法。搜索算法,如遺傳算法、爬Search Based SoftwareSBST從問題的解空間出發,通過啟發式搜索優化算法來解決測試用例生成的山算法等等。Test
6、ing問題。2023年,基于AIGC的代碼生成能力驚艷亮相,給用例生成領域帶來了底層核-可讀性高生成用例的執行通過心技術的變革。-可擴展性強率仍在持續提升中基于AIGC生成效率高ADDA軟件研發數字會AI驅動軟件研發全面進入數字化時代Digit#page#AI*軟件研發數字峰會NDDPART 02現有技術的問題和痛點#page#用例生成的難點與挑戰技術難點業務落地難點用例數據構造用例可讀性機器生成的用例,由于用例語句組裝策略相對固定復雜數據類型:大型業務系統中通常包含復雜數據類會導致生成的用例可讀性低于人工手寫用例型,如多層嵌套的JSON結構、復雜Object等;復雜語言特性:匿名內部類、la
7、mbda表達式等廣泛多語言擴展應用于業務系統中;基于SBST、程序分析等技術進行用例生成時,多語言之間的工程化能力差異較大,擴展難度高用例有效性斷言語句生成:測試用例需要包含有效斷言,才能具用例運行穩定性備發現問題的能力;運行效率:單測用例量級較大,需保證相應的運行效問題發現能力:基于代碼的用例生成,斷言值一般與率,以適配Devops;代碼保持一致。對代碼問題發現有帶后性;環境依賴:需進行用例執行前后的清理,以解除用例相互依賴NDDAI軟件研發數字峰會AI驅動軟件研發全面進入數字化時代pigital#page#AIGC浪潮下用例生成的變革以大模型為基礎進行用例生成,很多已有的難點和挑戰都有了新
8、的解決方案;用例可讀性全語言支持大模型生成的測試用例可讀性優于傳統生成工具;大模型天然支持全語言,傳統生成工具在跨語言支持時則會遇到很多技術難點。以SmartUnit為例,語句組裝、運行時環境等都和語言緊密相關;oSuiteenaTes環境構建單測用停送代過程營種子用子02:which交理AI軟件研發數字峰會NDDAI驅動軟件研發全面進入數字化時代#page#AI*軟件研發數字峰會NDDPART 03基于AIGC的螞蟻新一代測試用例自動生成#page#產品能力需求-to-測試用例需求-to-測試用例,根據一句話需求來生成對應的測試用例(Java&Python)。幫助研發將測試環節前置,提高問題
9、發現效率;概括性需求:用Junit編寫一個登錄頁面的自動化用例聚焦性需求:編寫一個單元測試來測試一個名為hasCloseElements的方法,該方法檢查輸入的列表中是否有任何兩個數字之間的距離小于給定的閥值n.coNDDAI軟件研發數字會AI驅動軟件研發全面進入數字化時代#page#page#產品能力【被測代碼-to-測試用例復雜被測代碼:包含外部http請求500NDDA軟件研發政字峰會AI驅動軟件研發全面進入數字化時代610#page#產品能力需求-測分-測試用例電國張器與??浦匈徱蚬猜谩霸浣鈩訒冉 皥D其感劃依我我要能原因其展一一張器用于檢查代碼實現的邏輯錯誤;我有一段代碼,輸入是u
10、serstaffNo和belongingworkbenchCode在zcache中查詢是否存在對應的用戶權限結果,如果有返回查詢結果,如果沒有返回null。請列出這個功能的測試場景以下是代碼實現,結合上述測試場景,請為該代碼寫單測public class UserRolePermissionFacadeImpl implements UserRolePermissionFacprivate UserRolePeraissionResult queryIncache(string userstaffNo,stringbString key=UserRolePermissionResult use
11、rRolePermissionResult s null;if(Stringutils.isNotBlankvalue)userRolePermissionResult = JSON.parseobject(value,UserRolePerreturn userRolePermissionResult;AI+軟件研發數字峰會NDDAI驅動軟件研發全面進入數字化時代pgital#page#產品能力【測試用例補全測試用例補全:對存量未包含Assert的測試用例進行補全,增強用例有效性;igitlait面代碼是針對上面核請補全用例,生成ssert.assertEes,esuttDigit)n.cl
12、assbtfcwoatestHeDsgtToItwithItoutersionmxDigitToInteg1txDigit以開源代碼倉庫commons-lang中的代碼為基礎,設計評測集。以pass1和Assert強校驗占比作為評測指標:說明指標指標值pass61自動補充Assert后,用例正常執行并且Assert校驗通過67.7%97.8%Assert強校驗占比自動補充的Assert為強校驗的占比NIDDAI軟件研發數學峰會AI驅動軟件研發全面進入數字化時代#page#技術大圖個十)測試用例訓練樣本站Promp分析使用反饋測試用例GPTWEBIDE器件化多語言測試用例樣本抽取框架,累計抽取原
13、始樣本量約用例樣本等選800W;CodeGPT測試用例樣本測試用例GPT(Eaor 33Q N用例可編譯用例可讀性測試生成模型訓練需求-to-測試用例InCont模超參調優被測代碼-to-測試用例練調優需求-測分-測試用例測試用例補全幸封險圍調能多語言源碼測試代碼抽取多語直ASTF用例-代碼陜射產品化用例識別WEB ChatIDE插件被測代碼CI組件識別提取NDDA軟件研發教字姓會AI驅動軟件研發全面進入數字化時代60#page#高質量樣本構建模型訓練使用的數據質量對效果至關重要,如何定義高質量測試用例訓練數據基于訓練反饋的樣本優化高質量訓練數據定義:測試用例與被測代碼精確匹配測試用例格式代碼
14、語法正確效果評測被測代碼格式代碼編譯通過原始樣本訓練樣本結果聚類測試用例運行通過用例質量篩選BadCase發現異常數據過濾反饋鏈路高質量用例:高質量用例代碼倉庫Meta信息,如star數、是否fork、單測探高質量倉庫高質量用例用例量級代碼倉庫CI信息,最近一次CI與Coverage上報star數倉庫C數據代碼解析類映射狀態;倉庫是否方法映射倉庫是否fork結構化代碼代碼分支與用例場景的映射;releaseAI*軟件研發數字峰會NDDAI驅動軟件研發全面進入數字化時代6#page#模型效果評測代碼生成類任務評測集代碼生成類任務評測指標評測集評測集介紹指標名指標介紹HumanEval由OpenA
15、I提出。Codex構建了一個包括164個人工手寫的計算生成代碼和標準答案代碼之間N-gram的匹配程BLEUPython編程問題的數據集HumanEval,其中每個編程問題包括函數頭度。HumanEvaldocstrings、函數體和幾個unittests,HumanEval中的編程問題可以用來評估語言理解能力、推理能力、算法能力和簡單的數學能力。在BLEU之上,CodeBLEU還要同時考慮代碼的關鍵字信息、AST結構化子樹信息以及代碼變量之間的數由于HumanEval只支持Python語言,因此智譜提出了HumanEval-X來CodeBLEU據流信息。CodeBLEU的最終結果由各個子部分
16、加權更好地評測代碼生成模型的多語言生成能力。HumanEval-X包含820個HumanEval-X求和獲得;高質量手寫樣本,覆蓋Python、C+、Java、JavaScript、Go,可用于多種任務。每個問題生成了k個解法。如果k個解法中任一個通過Google提出MBPP評測集(MostlyBasicProgrammingProblems),MBPP了全部單元測試,則認為這個問題被解決了。passk共包含974個Python編程任務passk則是全部問題被解決的比例一般關注pass1;微軟發布的代碼智能領域的基準數據集(CodeXGLUE),包含code-CodeXGLUEcode、cod
17、e-text、text-code、text-text四個類別NDDAI軟件研發數字峰會AI驅動軟件研發全面進入數字化時代pigital#page#模型效果評測類比代碼生成,使用HumanEval-X評測集進行評估,核心指標采用pass1;司(string(slrnJavk/測試用例生成評測數據集構建prompt使用HumanEval-X中的declaration+canonical_solution,針對prompt調用模型生成測試用例類(包含多個tests、多個assert),測試用例類中的全部tests都執行通過則認為pass;模型效果使用HumanEval-X評測集對模型的測試用例生成能
18、力進行評估(下表中為7b的評測結果,13b模型pass1模型效果更優)Js pass1Go pass1C+pass1Java pass1Pythonpass1TestGPT-7B模型現已開源,歡迎大家圍觀試用:48.6%35.67%39.02%22.1%56.2%https:/ 04總結與展里#page#總結與展望豐富產品場景模型能力優化以研發活動中質量各個環節為passk等核心指標提升切入點,持續豐富場景知識融會貫通的能力XK模型工程化能力。開源共建用例prompt自動組裝開放共建、快速選代用例全生命周期管理AI+軟件研發數字峰會NDDAI驅動軟件研發全面進入數字化時代#page#AI*軟件研發數字峰會NDDTHANKS#page#