IMDEA软件研究人员FacundoMolina、JuanManuelCopia和AlessandraGorla提出了FIXCHECK,这是一种改进补丁修复分析的新方法,它结合了静态分析、随机测试和大型语言模型。
他们的创新体现在论文“通过随机测试和大型语言模型改进补丁正确性分析”中,该论文在国际软件测试、验证和确认会议(IT2024)上发表,更多详细信息可在Zenodo服务器上找到。
生成修复软件缺陷的补丁是软件系统维护中一项至关重要的任务。通常,软件缺陷是通过测试用例报告的,测试用例揭示了软件中的不良行为。
为了解决这些缺陷,开发人员会创建补丁,这些补丁必须经过验证才能提交到代码库中,以确保提供的测试不再暴露缺陷。然而,补丁仍可能无法有效解决底层错误或引入新错误,从而导致所谓的错误修复或不正确的补丁。
检测这些不正确的补丁会严重影响开发人员修复错误所花费的时间和精力以及软件系统的整体维护。
自动程序修复(APR)为软件开发人员提供了能够自动生成错误程序补丁的工具。然而,它们的使用发现了大量无法解决错误的错误补丁。
为了解决这个问题,IMDEASoftware的研究人员创建了FIXCHECK,这是一种改进补丁正确性分析输出的新方法,它结合了静态分析、随机测试和大型语言模型(LLM)来自动生成测试以检测潜在不正确的补丁中的错误。
FIXCHECK采用两步流程。第一步是生成随机测试,获得大量测试用例。第二步基于使用大型语言模型,从中为每个测试用例得出有意义的断言。
此外,FIXCHECK还包括一个选择和优先级机制,该机制在修补的程序上执行新的测试用例,然后根据这些测试在补丁中发现错误的概率丢弃或排序这些测试。
IMDEA软件研究所博士后研究员FacundoMolina表示:“我们在160个补丁上评估了FIXCHECK在生成测试用例以揭示错误补丁中的错误的有效性,其中包括开发人员创建的补丁和由RPA工具生成的补丁。”
结果表明,FIXCHECK可以有效地对62%的开发人员编写的错误补丁生成错误检测测试,并且可信度很高。此外,它还通过提供测试用例来补充现有的补丁修复评估技术,这些测试用例可以揭示由最先进技术识别出的多达50%的错误补丁的错误。
FIXCHECK为软件维护期间自动生成测试和检测故障提供了强大的解决方案,代表了软件修复和维护领域的重大进步。这种方法不仅提高了补丁验证的有效性,而且还促进了自动化程序修复方法的更广泛采用。