1、大模型赋能软件工程的学与评以软件测试为例陈振宇南京大学智能软件工程实验室新质软件工程人才培养 从自动化到智能化大模型带来的机遇与挑战 本次报告的智能化不限于大模型 不严格区分大模型和预训练模型 智能化对于自动化强调学习能力 新质生产力是创新起主导作用,摆脱传统经济增长方式、生产力发展路径,具有高科技、高效能、高质量特征,符合新发展理念的、先进生产力质态。它由技术革命性突破、生产要素创新性配置、产业深度转型升级而催生。以劳动者、劳动资料、劳动对象及其优化组合的跃升为基本内涵。创新能力的培养 跨学科知识学习 实践能力的提升 持续学习的习惯软件工程软件需求软件设计软件构造软件测试LLM for So
2、ftware EngineeringSearch&queryingCommunity Code&documents Complexity Conformity Changeability InvisibilityHow LLMs are changing the landscape of software engineering?requirement,design,coding,testing,maintenanceNo silver bullet?微观的流畅宏观的限制结果的随机创造的缺失工程的复兴A Survey on Large Language Models for Software
3、Engineering.ArXiv软件自动化:从萌芽到爆发 程序自动生成:给定S自动生成P:使得S=P。在工程上表现为S(T)=P(T)。测试自动生成:给定S和P自动生成T:验证S(T)=P(T)。LLM推动新质软件工程发展需求设计编码测试软件测试需求派生SPT给定规格S和测试集T,生成程序P,使得P(T)=S(T)代码生成的可行定义给定规格S和程序P,修复程序O(P)=S代码修复的理想定义给定规格S,程序P和测试集T,修复程序O(P)(T)=S(T)代码修复的可行定义需求驱动测试驱动给定规格S,生成程序P,使得P=S代码生成的理想定义代码生成可看作修复的零启动特例代码审查测试验证T的充分性人
4、员经验双向驱动领域知识复用零启动低成本人机协同:代码搜索与模版构建大模型发展推动需求驱动代码生成与修复全流程测试演化提高测试充分性大模型时代的学与评评价的目的不是为了证明,而是为了改进。-拉尔夫泰勒(Ralph Tyler)大模型时代的学与评大模型时代的学大模型时代的评学习使用大模型完成任务采用大模型进行辅助学习采用大模型进行学习评价基于大模型的软件工程评价文档代码图像基于大模型的软件工程评价客观评估内容 测试用例设计 用例数量统计 测试覆盖率 场景覆盖度量 测试代码编写 代码规范性 执行成功率 自动化覆盖率主观评估内容 测试用例设计 设计思路合理性 用例优先级安排 测试用例充分性 测试报告撰
5、写 问题描述准确性 分析深度 改进建议价值基于大模型的软件工程评价RUM=Rule+LLM RUM:结合规则引擎和大语言模型的混合评估方法预处理评估标准构建双引擎评估预处理:将测试用例、测试代码、测试报告等测试产物转换为结构化数据;评估标准构建:基于评估标准分别生成主客观评估规则;双引擎评估:使用规则引擎进行客观评估,使用基于大模型的评估引擎进行主观评估。基于大模型的软件工程评价在全国大学生软件测试大赛中,我们使用 RUM 方法对参赛选手的测试产物进行评估,并 取得了较好的效果,得到了在场评委的一致认可。规则引擎评估客观指标:代码规范性、测试覆盖率等LLM 评估主观内容:测试策略合理性、问题描
6、述准确性等基于大模型的软件工程评价基于大模型的软件工程评价基于大模型的软件工程评价基于大模型的软件工程评价实验结果概括:同人工手工评价相比,评估效率提升了80.77%;同人工手工评价相比,评估成本降低了97.38%;在多个指标上同人工的一致性超过85%。软件测试基础回顾规格S程序P测试T理想:S=P工程:S(T)=P(T)测试生成问题测试预言问题测试终止问题基于大模型的XUnit测试脚本生成基于大模型的XUnit测试脚本生成基于大模型的XUnit测试脚本生成基于大模型的XUnit测试脚本生成 TestAgent 共生成了 5597 条运行失败的测试用例。