Page 30 - 《软件学报》2026年第7期
P. 30

赵英全 等: 基于大语言模型的        Java 新特性测试程序生成                                           2715


                  5   讨 论

                    本文提出基于大语言模型的           Java 新特性测试程序生成方法        LumiX. LumiX  通过利用大模型强大的文本理解
                 及代码生成能力, 结合程序分析方法, 生成能够覆盖                Java 语言新特性的测试程序. 接下来本节将对可能影响到本
                 文有效性的因素进行分析, 并对未来的研究工作进行展望.
                  5.1   有效性影响因素分析
                    ● 内部有效性分析. 本文的内部有效性影响因素主要来自使用的模型及技术实现. 为了减少这些因素给方法
                 有效性带来的影响, 本文均使用官方提供的              API 来访问大模型. 模型选择和参数设置可能影响本文方法的性能, 构
                 成潜在威胁. 为缓解该威胁, 本文选取了通义千问-Max              和  DeepSeek  两种国内代表性模型进行实验, 它们在模糊测
                 试、代码生成等任务中均表现良好. 参数设置则参考已有研究的建议实践进行设置. 同时, 本文程序相关部分均采
                 用了成熟的第三方框架, 如        JavaParser 等. 此外, 本文参考了现有工作的代码实现, 如         JavaFuzzer、JavaTailor 等, 本
                 文的开发人员也对编码实现进行了多次验证, 最大程度地保证了本文代码实现的正确性.
                    ● 外部有效性分析. 影响本文实验结果结论的外部因素主要包含                    3  个因素. 首先, 本文使用的种子程序是否具
                 有代表性. 为了保障实验结果的有效性, 本文使用的种子程序为现有工作                       JOpFuzzer 整理的历史揭错测试程序集,
                 该数据集覆盖了多种       Java 语法特征及   JVM  的不同模块. 同时, 本文进一步考虑了使用测试程序生成工具                JavaFuzzerr
                 生成的测试程序作为种子程序, 并对比其与历史揭错测试程序之间效果的差异. 其次, 本文的实验平台是否具有一
                 致性. 为了减少实验平台对实验结果的影响, 本文的所有实验均在同一个实验平台上运行. 最后, 随机性是否会对
                 本文的结论产生影响. 为了减少随机性带来的影响, 本文选择了                   4  个长期支持的    OpenJDK  版本作为测试对象, 在
                 每个版本上都进行相同的实验, 以此来确保实验结果在不同的实验版本上具有相似的结论, 减少随机性带来的
                 影响.
                    ● 对比有效性分析. 影响本文实验结果对比有效性的主要因素为实验所选择的评价指标是否合理. 为此, 本文
                 采用了现有    JVM  测试工作中常用的评价指标来评估本文的有效性, 即不一致缺陷数量、代码覆盖以及未知缺陷
                 检测的数量. 在不同组件与大模型的消融实验中, 本文针对性地设计了有效性、平均消耗词元以及平均生成长度
                 等指标进行评估, 从而从多方面提升实验结论的有效性.
                  5.2   未来工作展望
                    本文是针对语言新特性的测试程序生成方法, 有效地弥补了现有测试方法在新特性测试方面的不足. 尽管本
                 文在新特性缺陷检测上已取得了一定的效果, 但其仍存在一定的改进空间. 首先, 不同的大模型在代码生成、上下
                 文理解能力上存在较大的差异. 因此, 在未来的研究中, 有必要对不同的大模型                       (例如, 代码大模型) 的能力进行深
                 入的对比分析, 并探索多模型融合以提升测试生成效果. 同时, 目前本文仅通过缩减代码生成规模缓解幻觉问题,
                 后续可结合反馈式生成        (feedback-guided generation) 或检索增强等策略进一步降低模型幻觉. 其次, 本工作参考现
                 有  JVM  测试工作中常用的评价指标来评估不同组件消融后的效果, 而未对大模型总结与生成的准确性以及生成
                 质量影响因素     (如插入点随机性所带来的影响) 进行系统的评估, 但细粒度的评估方法有助于进一步加深对方法
                 机理与有效性的理解. 在未来工作将引入更细粒度的度量方法, 如基于文本相似度评估大模型对新特性的总结准
                 确性, 基于代码表示评估生成片段的语义正确性, 以系统分析各组件的独立贡献, 从而使方法验证更为全面严谨.
                 最后, 本文实验仅在      Java 语言新特性上进行了验证. 然而, 本文所提出的方法具有通用性, 其依赖于大模型对语言
                 特性的总结与代码生成, 并结合历史揭错程序中丰富的上下文来生成测试程序, 并不局限于                             Java 特定语法. 因此,
                 本方法可以迁移至未来尚未发布的语言新特性, 乃至其他编程语言                      (如  C#、Kotlin) 的新特性测试场景.

                  6   总 结

                    本文提出一种基于大语言模型的语言新特性测试程序生成方法                       LumiX, 旨在生成能够覆盖新特性的测试程
                 序. LumiX  首先利用大模型文本理解能力, 对         Java 的新特性描述进行解析, 从而总结出新特性的使用描述; 随后,
   25   26   27   28   29   30   31   32   33   34   35