文章摘要
【关 键 词】 单元测试、代码质量、深度学习、模型优化、数据工程
在QCon全球软件开发大会(上海站)上,字节跳动质量效能专家赵亮分享了基于大模型技术的单元测试用例自动生成技术。这项技术结合深度程序分析,旨在提高代码质量和开发效率,解决单元测试用例真实性和覆盖率问题。通过采集真实业务流量、单测框架能力和路径提升技术,有效提升了测试用例生成效率和代码覆盖率。
赵亮的演讲分为六个部分,包括痛点与现状、目标与挑战、数据质量提升、代码生成效果提升、效果演示和总结与规划。他指出,业务代码单元测试覆盖率不高,主要因为开发人员时间不足,导致质量保障工作交给测试团队,但测试团队精力有限。此外,现有工具效果不足,如生成数据可读性低、用例多样性不稳定和编译通过率低。
为了提升单元测试生成效果,团队采取了一系列措施,包括基于流量来源的收集和采纳、流量蒸馏和流量分发。这些措施显著提升了用例的可信度、用户的采纳率和问题的发现率。同时,团队还采用了等价类设计等方法提升测试覆盖率,并结合模型和工程方法解决单元测试中的路径覆盖问题。
在模型与程序分析的融合方面,团队通过工程化方法和模型各自承担不同角色,提升了代码分析的准确率和稳定性,同时利用模型的灵活性和泛化效果。此外,团队还关注模型生成和模型修复所需的语料条件,以提高模型的准确性。
在代码生成效果提升方面,团队通过模型实现了一系列关键进展,包括提升模型泛化效果、选择合适的提示词、生成有效的单测数据和模型效果生成评价。整体架构包括数据环节、模型选用和模型评测及优化。
数据工程建设方面,团队确保数据集的可信度和纯净度,细分为六个关键环节,包括样本打标、样本筛选、隐私过滤、格式处理、数据简化和数据配比打乱。这些环节有助于提升大模型的理解能力和泛化效果。
PE工程及模型微调方面,团队覆盖了多个方面,包括路径提升、参数补全、语法修正和断言修正。实验结果表明,不同的提示词方式对效果有显著差异。
评测工程建设及效果方面,团队设计了不同阶段的专项评测集,包括人工评估和五个评测指标,以进行综合评估。目前,团队正处于基于DPO的多轮偏好学习提升阶段,期望通过持续优化改善效果。
效果度量及演示方面,团队关注覆盖率和场景支持的提升。目前,仓库级覆盖率达到了40%,部分仓库甚至提升到了60%。在断言通过率上,也达到了较高水平。
总结及规划方面,团队已完成基础层、生成层、修正层和统计&应用层的工作,为后续的测试维护提供了坚实的支撑。规划方面,团队将重点进行模型的持续优化、用例召回分析、用例保鲜机制以及产品多元化。
原文和模型
【原文链接】 阅读原文 [ 8838字 | 36分钟 ]
【原文作者】 AI前线
【摘要模型】 moonshot-v1-32k
【摘要评分】 ★★★★★