复旦大学计算机科学技术学院CodeWisdom团队(暨复旦大学软件工程实验室)在2024年国际会议ISSTA(International Symposium on Software Testing and Analysis)上,发表了多项研究成果。
ISSTA是软件工程领域公认的权威性顶级国际会议之一,也是中国计算机学会推荐的软件工程领域A类会议,汇集了学术界与工业界研究人员,共同探讨软件测试与分析的新进展与新趋势。 ISSTA 2024共录用143篇论文,录用率为20.6%。
关于开源软件许可证分析的论文《Your “Notice” Is Missing: Detecting and Fixing Violations of Modification Terms in Open Source Licenses during Forking》对开源许可证中的修改条款开展了经验研究,总结了修改条款所涵盖的代码修改范围、约定义务的内容构成、格式规范及位置。研究发现在所选择的107个开源许可证中,接近半数明确包含了关于修改条款的阐述,并清晰界定了修改后需履行的相应义务,即提交修改日志(Notice)。基于此,该论文提出了一种名为LiVo的许可证修改条款违规检测与修复方法。具体来说,LiVo首先判断开源项目是否受到修改条款的约束;随后,深入分析项目历史中的代码提交记录。通过比对代码提交描述与修改日志的匹配程度,LiVo能够准确判断代码提交是否缺失了必要的修改日志,从而有效检测出许可证修改条款的违规行为,并针对性地提供修复建议。论文在178个开源项目上进行了全面评估,展现出了较高的检测准确率和性能表现,并收获了18条来自开发者的反馈,其中8条建议已被成功合并至项目中。论文作者:黄凯锋、夏应峰、陈碧欢、何思洋、曾华正、周卓彤、郭锦、彭鑫。
图1 LiVo方法概览
关于自动驾驶系统仿真测试的论文《DiaVio: LLM-Empowered Diagnosis of Safety Violations in ADS Simulation Testing》对仿真测试中车辆碰撞场景的自动化诊断与分类展开了研究。该论文提出了一种利用大语言模型(LLM)来自动诊断仿真测试中车辆违规行为的方法DiaVio。该方法建立在新的特定领域描述语言之上,以协调用自然语言描述的现实世界事故报告和仿真测试中的违规场景。DiaVio使用真实事故报告对基础LLM进行微调来学习诊断能力,并使用微调后的LLM来诊断仿真测试中的违规场景,包括碰撞责任认定和碰撞场景分类。论文使用AV-Fuzzer和DriveFuzz两个仿真测试工具在Apollo和Behavior Agent两个自动驾驶系统上验证了DiaVio在仿真测试违规诊断方面的有效性和效率,结果表明DiaVio可以分别在碰撞责任认定和碰撞场景分类达到93.84%和96.81%的准确率。论文作者:鲁游、田逸凡、毕昱阳、陈碧欢、彭鑫。
图2 DiaVio方法概览
关于缺陷引入变更定位的论文《C2D2: Extracting Critical Changes for Real-World Bugs with Dependency-Sensitive Delta Debugging》对增量调试(Delta Debugging,DD)技术的优化展开了研究,旨在提升软件缺陷引入变更的定位精度与效率。增量调试是一种经典的自动化方法,用于识别代码中的缺陷引入变更。现有的DD方法未能充分利用代码变更之间的依赖关系,且无法发现和修复错误或缺失依赖关系,造成DD的效果和效率受到很大的限制。为了解决这一问题,该论文提出了一种依赖敏感的增量调试方法C2D2。该方法通过概率模型对代码变更之间的依赖关系进行分析,以解决由于依赖关系错误或缺失而导致的误报问题。该方法还设计了一种多策略的变更元素选择机制,从而更有效地选择代码组合。论文在一个回归缺陷库以及Defects4J缺陷库中开展了实验验证。结果表明,相比最先进的DD方法,C2D2能提升37.59%的准确性和4.38%的效率。论文作者:宋学志、吴毅坚、刘书宁、陈碧欢、林云、彭鑫。
图3 C2D2方法概览
关于flaky测试重现的论文《Reproducing Timing-dependent GUI Flaky Tests in Android Apps via A Single Event Delay》提出了一种高效重现移动应用中并发相关flaky测试的方法FlakeEcho。FlakeEcho通过动态分析,追踪移动应用中的事件序列,推断导致flaky测试失败的事件竞争,并通过选择性地延迟相关事件来重现失败,从而避免对所有可能的事件顺序进行全面探索,大幅减少了测试运行次数。在22个广泛使用的开源移动应用上的实验评估展示了该方法的高效性和可靠性。在80个并发相关的flaky测试中,FlakeEcho成功重现了73个测试,平均每个测试仅需运行1.71次。该论文为移动应用的flaky测试调试提供了实用、高效的解决方案,具有重要的实际应用价值。论文作者:蔡小宝、董震、王永江、Abhishek Tiwari、彭鑫。
图4 FlakeEcho方法概览
CodeWisdom团队的研究工作聚焦国家战略性需求和产业共性问题,主要围绕智能化时代的软件工程与系统软件技术展开,具体包括软件智能化开发与运维方法与技术(AI4SE)以及面向智能化系统的工程化方法与技术(SE4AI)两个方面。前者关注于将大模型等智能化技术应用于软件开发、测试与运维方法中,后者关注于智能汽车、自主无人系统等新型智能化系统中的基础软件支撑及开发测试方法。此次研究成果是长期技术积累与企业需求相结合的产物,更促进了团队坚持走“科研服务产业、产业促进科研”的发展道路。