摘要:Java编程语言自诞生以来, 就始终处于不断发展和演变的过程中. 随着新语言特性及编程范式的不断涌现, Java的表达能力和执行效率在不断提升, 推动了整个软件生态的进步. 为了确保Java生态的安全性和稳定性, 研究人员设计了多种针对Java编译器及虚拟机的测试程序生成方法, 以检测潜在的缺陷. 然而, 现有工作主要针对成熟的语法设计测试程序生成方法或变异策略, 难以对语言新特性进行有效的测试. 为此, 提出一种基于大语言模型的Java新特性测试程序生成方法LumiX. 首先, LumiX利用大模型对使用自然语言描述的新语言特性进行总结, 概括得到新特性的使用描述; 随后, LumiX以历史揭错测试程序作为种子程序, 利用程序分析工具提取种子程序中可复用的程序元素, 结合新特性的使用描述, 利用大模型生成针对新特性的代码片段. 新生成的代码片段将被插入至种子程序中, 生成能够覆盖新特性的测试程序. 最后, LumiX设计了双层的差分测试方法, 分别利用不同的Java编译器(javac和ECJ)及Java虚拟机(HotSpot和OpenJ9)对新生成的测试程序进行编译和执行, 通过对比不同编译器和虚拟机的执行结果来检测潜在的缺陷. 实验结果表明, LumiX能够有效生成覆盖Java语言新特性的测试程序, 并提升现有工具对Java语言新特性的测试能力. 同时, 将LumiX应用于最新发布的Java编译器以及虚拟机的测试中, 累计发现16个未知缺陷, 其中12个已被开发人员确认或修复.