2025QECon全球软件质量效能大会:基于LLM的单测⽣成技术_第1页
2025QECon全球软件质量效能大会:基于LLM的单测⽣成技术_第2页
2025QECon全球软件质量效能大会:基于LLM的单测⽣成技术_第3页
2025QECon全球软件质量效能大会:基于LLM的单测⽣成技术_第4页
2025QECon全球软件质量效能大会:基于LLM的单测⽣成技术_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于LLM的单测生成技术赵亮|字节跳动赵亮先后在蚂蚁集团余额宝质量技术和研发效能任职、现就职于字节质量保障团队,现任字节质量内 01问题&挑战 02破局之路 04效果度量&演⽰ 05总结与展望编写耗时存量过大存量仓库方法未单测:大量需求研发与单测编写耗时:1:1单case编写耗时存量过大存量仓库方法未单测:大量需求研发与单测编写耗时:1:1单case编写时长:5-15min目标仓库全量行覆盖:<10%生成用例多样性:<30%现有工具效果不足生成数据可读性:较低业务常态化需求并发量:3-4未覆盖代码引发问题:>5%业务常态化需求并发量:3-4未覆盖代码引发问题:>5%生成编译通过率:<10% >自动化智能化代码质量研发效能 >自动化智能化代码质量研发效能组件化可度量框架兼容开箱即用体验提升强化学习数据精炼思维推导有效生成依赖强化链路补全控制分析约束求解精准分析组件化可度量框架兼容开箱即用体验提升强化学习数据精炼思维推导有效生成依赖强化链路补全控制分析约束求解精准分析断言通过率100%Mock完整率100%流量采纳率90%研发投入降低70%涵盖目标100%仓库级60%方法级80%ROI目标仓库目标覆盖率目标有效性目标智能化可用率智能化全面性全面性模型生成所需语料条件:条件数据、路径数据、函数签名、依赖结构定义等模型修复所需语料条件:错误堆栈信息、错误相关数据结构、错误类型等原始被测代码⽰例被测代码到路径生成的拆解⽰例现状问题:入参数据结构复杂脱离业务理解生成的数据无业务价值出入参数据相关性不强函数内依赖数据多现状问题:入参数据结构复杂脱离业务理解生成的数据无业务价值出入参数据相关性不强函数内依赖数据多样断言生成目标性不⾜数据效果用例通过率提升:30%数据价值流量来源流量蒸馏流量分发整合来自自动化、业务以及回放等真实流量数据未使用流量时模型构造的参数使用流量后模型构造的参数现状问题:现状问题:被测函数路径复杂度参差模型推理依赖的提⽰词数据精确性要求高执行条件路径差您将直接导致断言失败您常路径往往难以覆盖与已有单测存在冗余检测用例要素分析逻辑分析路径分析的程序分析技术将代码中控制流与数据流进行条件组合关系的拆解,完成从要素分析到逻辑分析最终实现路径分析的全过程数据效果析析覆模块价值要素分析:针对入参、出参以及方法体内传参变量均为可控变量,通过可控变量的分析完成数据流的前置解析。控制条件为可能影响方法中不同逻辑分支路径的条件约束。逻辑分析:涉及分支类型、控制组合、变量溯源三类数据分析基础路径分析:一个方法中存在多个路径组合关系,多种条件组合为。Agentic智能化革新特征优势局限对于单测MCP的低成本维护和快速迁移(适用于trae、cline等三方IDE)生成时间轴138s生成时间轴138sUtGenAgentBizAgentJAVA变量分析JAVA参数分析JAVA调用分析JAVA路径分析GO变量分析GO参数分析GO调用分析GO路径分析GO业务流量GO执行检测GO覆盖分析调度SupervisorAgentPlannerAgent监控informant_func使用此工具可以在一次调用中查找某些函数/方法的实现、相关包、输入/输出参数细节。结果包含函数/方法的输入/输出参数的实现、类型和定义,以及函数/方法中使用的相关包。informant_type使用此工具查找变量/类型的定义和用法/定义包。您可以使用此工具在一次调用中查找变量的多个定义和用法/定义包。结果包含变量的类型、(变量)类型的定义以及相应的用法和定mocker使用此工具可以了解如何为目标函数模拟所有stylize获取单元测试框架/样怯的模板和⽰例。当您需要为单元测试代码的特定实现风格提供请使用此工具。参数‘samples’控制是否使用所选框架/样怯的一些⽰例作为额外返回(默认get_package_pathgo_mocker使用此工具可以了解如何为目标函数模拟所有分析能力:LSP,引入跨语言分析协议将提高单测对多技术栈的分析兼容。打包技术:NPX,通过NPX打包可快速在不同支持MCP的IDE中安装应用。传输方怯:STDIO,构建本地的MCP将提高单测快速理解用户本地代码。生成时间轴40sSingleAgentMultiAgent静态分析工具集成单测专有工具支持技术栈执行检测工具工具入参设计1良好的工具定义2反馈与纠正机制“namemustbeastring”。工具返回机制3结构化数据返回4自然语言转换函数分析工具描述⽰例获取单测反馈,探索多种工具调用顺序难点:奖励组合难题待解多工具多轮调用模怯待研究1一期目标生成任务,形成泛化抽象与多轮工具调用能力1一期目标生成任务,形成泛化抽象与多轮工具调用能力2二期目标加入修复多任务,精准修改,减少修复轮次奖励稀疏问题代码编译执行环境搭建工具返回内容处理格怯奖励30%工具调用奖励25%正确性奖励45%*分阶段动态增强奖励复杂度Verl已有相关Verl已有相关GitHubfork/提交适用于单测"可验证奖励"任务,在数学推理和代码生成表现佳Qwen2.5Qwen3Qwen2.5Qwen3检索增强生成(RAG):将生成能力与来自外部知识库的即时检索相结合,确保答案的真实性和最新性。AgenticAI:使模型能够决定何时检索、检索什么以及如何将检索到的证据编织到其推理中。1Archer的业务数据的复用泛化结合archer采集到的真实数据进一步在非目标函数的结构体中增强泛化构造。如业务定义规则ID1002->推理构造2002活10032结合TCRAG的深度业务知识检索结合Lark、项管系统等有效地提高搜索深度和答案质量。3代码知识图谱⽰⽰Req1->methodReq1->method1Req2->method2…Req3->method3多模态混合模型沉淀知识库mutatemutate字段间依赖关系破坏:例如start_time>end_time。SETP2模型选型及应用模型选型:SETP2模型选型及应用模型选型:deepseek7B->22B、codegeenx6B训练加速:deepspeed训练方怯:LORA☒全量workflow+Agent多流程交互PE选型:COT+fewshotSETP3模型评测及优化评测方怯:humaneval-x、机评反馈优化:RLHF+PP0评测手段:主观、客观、通用评测集选择:可信、未被污染、多编程语言、分阶任务语言源码promptanswer历史+分析有效测试代码抽取编译修正语法修正数据补全断言修复运行时修正测试生成率编译通过率路径/覆盖提升率断言通过率平均用例生成耗时outputLearningrateNumworkers数据样本修正类评测类生成类语法修正断言修正编译修正RewardmodelmodelmodelmodelmodelmodelAgentgoogle测试金字塔:E2E5%、iteration15%、unit80%(链路复杂度低,覆盖场景多、业务语义低、生成准确性高)SETP1训练样本构建基于内部库的数据样本构建基于gitgub的数据样本构建基于模型的扩增基于反馈的补充样本打标样本分类样本筛选隐私过滤格怯处理数据去重模型训练数据清洗模型微调Context输出反馈评测主观评测通用数据learning样本答案1.样本打标:对样本进行分类,一方面分类标签有助于大模型理解问题,另一方面可以基于分类标签进行多样性评估样本答案1.样本打标:对样本进行分类,一方面分类标签有助于大模型理解问题,另一方面可以基于分类标签进行多样性评估,数据的多样性则有助于模型在学习更广泛的模怯,避免数据Biased。2.样本筛选:去除有毒的、无关的、低质量的数据3.隐私过滤:去除隐私信息4.格怯处理:统一样本格怯,去除特殊字符5.数据简化&去重:代码简化,去除重复数据6.数据配比打乱:将不同数据来源的比例控制、混合打乱样本简化转译c++:std::样本简化转译c++:std::cout<<高频内置函数统一:UASTgolang:fmt.Printlnjava:System.out.printlnpython:printprint》》去除无关代码UT微调代码简化方案·保留函数声明[原因:待测函数]·保留函数调用语句[原因:需要mock函数调用]·保留控制流信息,如ifswitchfor。[原因:提升路径覆盖所需信息]·保留和控制条件相关的变量的赋值语句。[原因:提升路径覆盖所需信息]·保留return语句。[原因:断言]模型选型:Deepseek7B->deepSeek32B模型选型:Deepseek7B->deepSeek32B整体Deepspeed包含基于人类反馈强化学习:1)监督怯微调(SFT2)奖励模型训练Reward;3)全量FT数据排序step2step1step3Reward参数补全语法修正断言修正路径提COT参数补全语法修正断言修正路径提COT规划路径ZeroShot模怯:QR该类型的CoT提⽰词只包含一个测试生成的Question,和生成测试用例的推理Reasoning。它不提供任何其它现有的测试用例作为参考。FewShots模怯:(QRA)+Q该类型的CoT提⽰词包含1个相同函数的案例测试用例的问题、推理、答案作为参考,并以要生成测试用例的函数Question结尾。FewShots'模怯:(QRA)+Q'该类型的CoT提⽰词包含1个或多个来自不同函数的案例测试用例的问题、推理、答案作为参考,并以要生成测试用例的函数Question结尾。升准出公怯针对每个测试函数i计算单独评分:准出公怯针对每个测试函数i计算单独评分:**机评流程前置初始化用例生成用例结果11类各13项共200+评测集可编译可运行覆盖率前置初始化离线执行评估离线执行评估离线执行评估前置初始化前置初始化评测结果更新结果分析&改进结果分析&改进Go评测效果变化可编译可运行覆盖率前置初始化离线执行评估离线执行评估离线执行评估前置初始化前置初始化评测结果更新结果分析&改进结果分析&改进Go评测效果变化机评过程数据模型差您性(pass@1)modelcompilesucratecoveragerateassertsucrateqwen3Gemini2.5发布版本数据versionCompilesucrateAssertsucrateGentimeNoanswerscore45.8%生成耗时与生成质54%生成耗时与生成质量成反比量成反比KimiKimik2231231插件生成场景支持语言:GO、JAVA·支持端:GoLang、VSCODE、Trae·支持端:GitLabMR、Devops提测阶段·支持端:小Q自测工作台web效果提升覆盖率:平均仓库及覆盖率提升80%以上,增量覆盖率90%效果提升单方法覆盖:对需要生成的单方法行覆盖98%复杂函数:复杂函数(超50行)生成成功率80%功能支持函数类型:支持11种类型的函数声明方怯的生成及中间件的生成功能支持修复策略:累计支持84项工程修复策略及模型修正策略流量支持:支持接口自动化、端到端、业务流量等多种流量的生成多维指标:支持23项明细及摘要维度的度量指标统计方怯1插件生成场景85%99%2增量生成场景2000+个28W+个10min93.01%88.3%3存量生成场景100+40万+80%+StepStep1确认目标函数Step2意图识别与拆解Step3分析被测代码Step4代码生成Step5修复及检测:::::::应用层:应用层:功能:提供业务产品化体验能技术:通用服务能力。统计层:功能:360可视化度量体系,提升可观测性。技术:事前&事中&事后;汇总&明细工程化采集分析技术。生成层:功能:支持厂内特定单测框架及开源单测框架生成。技术:基于UAST及符号分析配合模型泛化生成技术完成修正层功能:对生成中存在的编译、运行、断言等失败问题进行修复。技术:结合运行内存拦截及编译识别的工程手段,通过模型数据进行提升。基础层:功能:提供原始数据分析产物和流量采集产物。技术:基于语法分析、词法分析及探针插桩采集技术

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论