《A2--周海蓮--基于AIGC的螞蟻新一代測試用例自動生成技術.pdf》由會員分享,可在線閱讀,更多相關《A2--周海蓮--基于AIGC的螞蟻新一代測試用例自動生成技術.pdf(28頁珍藏版)》請在三個皮匠報告上搜索。
1、數生智慧2023/9/22-23中國上海高質量發展新等第九屆點OECon全球軟件質量&效能大基于AIGC的螞蟻新一代測試用例自動生成技術周海蓮螞蟻集團#page#OECon周海蓮目前主要負責測試用例自動生成方向。畢業后曾就職于百度、阿里、螞蟻,負責過搜索系統、廣告系統的質量保障和質量平臺研發2020年以來加入螞蟻,負責測試用例自動生成方向,孵化出智能單元測試用例生成產品SmartUnit,在螞蟻集團、阿里集團的多個BU中使用并取得優秀落地效果2023年開始探索基于AIGC的新一代測試用例生成技術,并在螞蟻內部探索落地;數生智慧全球軟件質量&效能大會高質量發園新#page#QECOn01測試用例
2、生成的技術演進02現有技術的問題和痛點目錄03基于AIGC的螞蟻新一代測試用例自動生成CONTENTS04總結與展望數生智慧全球軟件質量&雙能大會高質量發園新#page#OECon測試用例自動01生成的技術演進數生智慧全球軟件質量&雙能大會高質量發園新等#page#OECon測試用例自動生成【測試智能化】人工手寫大量測試用例一極致用戶體驗的用例編寫方式:秒級智能生成高覆蓋率、高有效性的測試用例理想中的測試用例實際中的測試用例各階段修復問題成本無有效AssertMOCK成本高變更修正用例量歷史負載SoogleIntegraton測試金字塔39測試用例的開發運維成本實際項目中測試占比Unit80%
3、好生器站全球軟件質量&效能大臺電共#page#OECon技術演進路線優勢不足技術方向發展歷史1988年,FuzzGenerator首次被提出,用于測試Unix程序的健壯性,通過構Fuzzing在安全領域獲得了非覆蓋率不夠好、生成常好的發現漏洞效果用例量過大造大量測試輸入從而發現軟件漏洞模糊測試Fuzzing2013年,Fuzzing技術迎來分水嶺:AFL,首次采用通過插樁獲取代碼覆蓋從而引導Fuzzing的方式。這一技術隨后被應用至測試用例生成領域1976年,SymbolicExecution的概念首次被提出,通過解析程序的路徑,用對能夠求解出的路徑,可以存在路徑爆炸、約束精準命中分支求解復雜
4、等問題,單符號模擬通過路徑并獲得輸出?;诜枅绦幸坏姆枅绦屑夹g難2006年,研究人員提出了一種”先進行符號執行,后根據符號執行結果生成Symbolic Execution以實現測試用例生成測試用例”的執行生成測試技術,這項技術后來發展出了用于檢測Linux內核錯誤的KLEE隨機性高1990年,B.Kore提出了使用動態數據流分析的技術進行路徑覆蓋,這是基于可擴展性高,可以應用多種基于搜索搜索的測試用例生成的初始想法。搜索算法,如遺傳算法、爬Search Based SoftwareSBST從問題的解空間出發,通過啟發式搜索優化算法來解決測試用例生成的山算法等等。Testing問題。2023
5、年,基于AIGC的代碼生成能力驚艷亮相,給用例生成領域帶來了底層核可讀性高生成用例的執行通過心技術的變革??蓴U展性強率仍在持續提升中基于AIGC生成效率高好生器站全球軟件質量&雙能大臺電共#page#OECon現有技術的問題02和痛點數生智慧全球軟件質量&效能大會高質量發園新等#page#OEC90用例生成的難點與挑戰技術難點業務落地難點用例數據構造用例可讀性機器生成的用例,由于用例語句組裝策略相對固定,復雜數據類型:大型業務系統中通常包含復雜數據類會導致生成的用例可讀性低于人工手寫用例;型,如多層嵌套的JSON結構、復雜Object等;復雜語言特性:匿名內部類、lambda表達式等廣泛V多語
6、言擴展應用于業務系統中;基于SBST、程序分析等技術進行用例生成時,多語言之間的工程化能力差異較大,擴展難度高;用例有效性斷言語句生成:測試用例需要包含有效斷言,才能具用例運行穩定性備發現問題的能力;運行效率:單測用例量級較大,需保證相應的運行效問題發現能力:基于代碼的用例生成,斷言值一般與率,以適配Devops;代碼保持一致。對代碼問題發現有帶后性;環境依賴:需進行用例執行前后的清理,以解除用例相互依賴;數生器慧全球軟件質量&效能大臺電共#page#OEConAIGC浪潮下用例生成的變革以大模型為基礎進行用例生成,很多已有的難點和挑戰都有了新的解決方案;用例可讀性全語言支持大模型生成的測試用
7、例可讀性優于傳統生成工具;大模型天然支持全語言,傳統生成工具在跨語言支持時則會遇到很多技術難點。以Smartunit為例,語句組裝、運行時環境等都和語言緊密相關;EvoSuiteEqual環境構建單測用送代過程貴公理好生器站全球軟件質量&效能大會電共費#page#OECon基于AIGC的螞03蟻新一代測試用例自動生成數生智慧全球軟件質量&效能大會高質量發園新等#page#OECon產品能力:需求-to-測試用例需求-to-測試用例,根據一句話需求來生成對應的測試用例(Java&Python)。幫助研發將測試環節前置,提高問題發現效率;概括性需求:用Junit編寫一個登錄頁面的自動化用例聚焦性需
8、求:編寫一個單元測試來測試一個名為hasCloseElements的方法,該方法檢查輸入的列表中是否有任何兩個數字之間的距離小于給定的閥值好生器站全球軟件質量&效能大會電共#page#OEC90產品能力:被測代碼-to-測試用例被測代碼-to-測試用例,根據被測代碼來生成對應的測試用例,目前支持五種語言:Java、Python、Javascript、C+、Go;簡單被測代碼:冒泡排序為以下代碼寫單測publicclass Bubblesort(arx.1engthLntmfor(inti=Oin-1;i+)boolean swappedsfalsefor(intj=0jarrj+11int t
9、emp=arrjarr=arr+11;arr+1=if(lawapped)break全球軟件質量&雙能大臺#page#page#QECo0產品能力:需求-測分-測試用例需求-測分-測試用例:根據需求描述生成對應的測試場景,再結合代碼生成最終的測試用例,使得測試用例的校驗能力與需求匹配,用于檢查代碼實現的邏輯錯誤;我有一段代碼,輸入是userstaffNo和belongingworkbenchCode,在zcache中查詢是否存在對應的用戶權限結果,如果有返回查詢結果,如果沒有返回null。請列出這個功能的測試場景以下是代碼實現,結合上述測試場景,請為該代碼寫單測public class Use
10、rRolePermissionFacadeImplimplements UserRolePermissionFacprivate UserRolePermissionResultqueryInCache(string userstaffNo,StringbString key=String vatue =zcacheService.getvaluekey);UserRolePermissionResult userRolePermissionResult = nullif (Stringutils.isNotBlank(value)userRolePermissionResult=JSON.p
11、arseobject(value,userRolePerreturn userRolePermissionResult;數生器慧全球軟件質量&雙能大會發新2#page#QECon產品能力:測試用例補全測試用例補全:對存量未包含Assert的測試用例進行補全,增強用例有效性;測試用例GgTont1gbtfcwoa testHeoDsgitTItalsdTnpute.rn digit1t1nputr)fexDiaitTontxDiaitubttc wota testHeDigitToTnt_withTnatiatnputt.GTes(wersion.xDigitToInte1titTolnthex
12、Digit說明指標指標值pass1自動補充Assert后,用例正常執行并且Assert校驗通過67.7%Asser強校驗占比自動補充的Assert為強校驗的占比97.8%好生器站全球軟件質量&效能大會發新#page#OECon技術大圖測試用例訓練樣本個十使用反饋(選代優化)武Promp分析測試用例GPTWEBIDE件公多語言測試用例樣本抽取框架,累計抽取原始樣本量約800W;CodeGPT測試用例樣本試用OPT用例可編譯用例可讀性用例場景音測試生成模型訓練需求-to-測試用例Fne tunlng模型超參調優被測代碼-to-測試用例模型微調川練調優需求-測分-測試用例測試用例補全多語言源碼測試代
13、碼抽取測試用例樣本Java多語市AST用例-代碼陜射產品化WEB Chat用創識別VIDE插件y Open API數生器慧全球軟件質量&效能大會醫量發區新#page#QEC90高質量樣本構建模型訓練使用的數據質量對效果至關重要,如何定義高質量測試用例訓練數據?基于訓練反饋的樣本優化高質量訓練數據定義:定測試用例與被測代碼精確匹配測試用例格式代碼語法正確效果評測被測代碼格式,代碼編譯通過原始樣本訓練樣本結果聚類測試用例運行通過用例質量篩選BadCase發現異常數據過濾反饋鏈路高質量用例:高質量用例代碼倉庫Meta信息,如star數、是否fork、單探高質量倉庫高質量用例測用例量級;代碼倉庫CI信
14、息,最近一次CI與Coverage上報star數倉庫CI數據代碼解析類映射狀態;倉庫是否,代碼分支與用例場景的映射;方法映射倉庫是否fork結構化代碼舒生器身全球軟件質量&效能大會發新2#page#OECon模型效果評測代碼生成類任務評測集代碼生成類任務評測指標評測集評測集介紹指標名指標介紹HumanEval由OpenAI提出。Codex構建了一個包括164個人工手寫的計算生成代碼和標準答案代碼之間N-gram的匹配程BLEUPython綜程問題的數據集HumanEval,其中每個編程問題包括函數頭度。HumanEvaldocstrings、函數體和幾個unittests。HumanEval中
15、的編程問題可以用來評估語言理解能力、推理能力、算法能力和簡單的數學能力。在BLEU之上,CodeBLEU還要同時考慮代碼的關鍵字信息、AST結構化子樹信息以及代碼變量之間的數由于HumanEval只支持Python語言,因此智譜提出了HumanEval-X來CodeBLEU據流信息。CodeBLEU的最終結果由各個子部分加權更好地評測代碼生成模型的多語言生成能力。HumanEval-X包含820個HumanEval-X求和獲得;高質量手寫樣本,覆蓋Python、C+、Java、JavaScript、Go,可用于多種任務。每個問題生成了k個解法。如果k個解法中任一個通過Google提出MBPP評
16、測集(MostlyBasicProgrammingProblems),MBPP了全部單元測試,則認為這個問題被解決了。passk共包含974個Python編程任務passk則是全部問題被解決的比例。一般關注pass1;微軟發布的代碼智能領域的基準數據集(CodeXGLUE),包含code-CodeXGLUEcode、code-text、text-code、text-text四個類別數生器精全球軟件質量&效能大臺醫量發區新#page#OECon模型效果評測類比代碼生成,使用HumanEval-X評測集進行評估,核心指標采用pass1;test(string)(string有蛋工監用(string
17、“Javk/測試用例生成評測數據集構建prompt使用HumanEval-X中的declaration+canonical_solution,針對prompt調用模型生成測試用例類(包含多個tests、多個assert),測試用例類中的全部tests都執行通過則認為pass;模型效果使用HumanEval-X評測集對模型的測試用例生成能力進行評估(下表中為7b的評測結果,13b模型pass1模型效果更優)Java pass1Jspass1Gopass1C+pass1Python pass139.02%22.1%56.2%48.6%35.67%近期我們會在github(https:/ class
18、 Typeutils t(dxdAleudkpepiM sdKIpep1M eu)sienbueooqesaend為以下代碼寫單測:if(type instanceof WildcardType)fnalwildcardType other=(wildcardType) type;restuhlic void testEquals_MildcardTypesaL()Type typelmOverrideTypel getAypte1public Typel getuppeTypele;public TypelI getlType type2=WildcardType)eoverrideType
19、e;pubtfc TypelI getupperBondsttTypel geOverrideTypele;)sy1oolean output=Typeutits.equals(typel,type2);Assert.assertTrueloutput);/兩個相同的通配類型應該相該不ctpt)#page#QECon04總結與展望數生智慧全球軟件質量&效能大會高質量發園新等#page#OECon總結與展望豐富產品場景模型能力優化以研發活動中質量各個環節passk等核心指標提升為切入點,持續豐富場景知識融會貫通的能力XK模型工程化能力開源共建用例prompt自動組裝開放共建、快速送代用例全生命周
20、期管理數生器慧全球軟件質量&效能大會電共#page#OECOn全球軟件質量&效能大會感謝聆聽關注QECon公眾號歡新會#page#查看會議詳情OECOn下一站預告全球軟件質量&效能大會面向測試、質量保障,研發效能提升,流程優化方向的會議。自動化測試金融系統質量保障數據驅動改進云原生質量LLM助力下的測試能力創新大廠專場DevOps技術實踐數智化質量工程專項測試價值流管理與高效能組織音視頻測試LLM驅動下的研發效能提升大前端質效實踐汽車行業質效前沿#page#SECOn全球軟件工程創新峰會下一站GLOBAL SOFTWAREENGINE查看往屆會議SECon全球軟件工程創新峰會下一站面向需求,架
21、構,平臺,編程,前后端開后源生果構業務安全大數招士法包錄實踐業務C專場云原生架構Java創新與實踐數學化新型數宇化免險系航金融以領構大的架構實題業務架院人工智能法與座平臺工程新保賽大數范平臺與限將大煙至助水大的種勢業務架構數字化免疫系統數字付架構實踐大數據平臺與架構人工智能算法與應用平臺工程新探索大模型助力軟件工程應用實踐大前端前沿超勢#page#閣RunnerGo企業級全棧測試平臺服務號技術交流群提高產品質量和穩定性一降低成本與資源投入|增強團隊效率|持續集成&交付flow流拖搜自由組合采用分流策略、支持自定義權重自定義觸發事件,即時消息通知報告多圖表實時監控內置六大壓測模式無需編寫代碼即可
22、完成復雜的U測試支持HTTP(S)、DUBBO、TCP多報告同屏對比,快速診斷問題Websocket、數據庫等多種協議測試#page#思碼逸先進的一站式研發效能度量分析平臺,數據驅動研發效能提升交流學習、免費試用【他們正在使用思碼逸SNO泰康電理想福美團國信證委O充抵。)工銀售0貝菜C童通LINER聯DLLEMCM針和訊日泰君空中國窗曲圖NAYUKI持的取據心限室sobey藝機爾S知道創膜SMEE奇安信獨家的研發效能指標“代碼當量”精準服務效能目標面向研發團隊不同角色質效人才三大功能貼合研發團隊四大角色比“代碼行數”更科學,支持完整效能分析體系并被信通為核心指標不同場景下的效能數據需求、高管5效率團隊/項目/個人全局縱覽/量化成本/人效管理多層級提升研發效率項目/產品經理合理規劃/進度管理/計劃評估質量多指標度量軟件工程質量推行質量內建團隊Leader質效管理/資源分配/過程改進化組織與人才發展效能專家/敏捷教練精細復盤開發者工作組織與個人共同成長目標管理/定義指標/下鉆分析#page#page#