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

2714                                                       软件学报  2026  年第  37  卷第  7  期


                 来, 该实验结果验证了       LumiX  中新特性使用描述总结组件的有效性: 该组件能够在减少词元消耗的同时, 有效提
                 升测试程序的生成质量.
                    表  7  展示了代码片段生成组件的消融实验对比分析结果, 其中                 w/o LumiXseg  指直接生成完整的新特性测试
                 程序而非代码片段的测试程序生成方法. 在评价指标方面, 本实验进一步设计了针对代码生成的评价指标: 平均生
                 成长度. 该指标通过统计大模型生成测试程序的平均词元长度, 从而衡量其生成测试程序的大小. 平均生成长度的
                 指标越小则表明其生成的测试程序越精简. 需要注意的是, 在                   LumiX  中, 本实验仅统计大模型生成的代码词元长
                 度而不包含其插入的种子程序的长度. 其主要原因在于, 从分析成本上看, 在对检测到的缺陷进行人工约简和定位
                 分析的工作中, 基于      LumiX  生成的测试程序可以很快定位到代码片段级别, 而无需对整个测试程序进行分析. 因
                 此, 本实验仅统计大模型生成的代码词元长度.

                                            表 7 代码片段生成组件消融实验对比分析

                                              LumiX                              w/o LumiXseg
                  OpenJDK 版本
                               编译器    虚拟机    有效性 (%)    平均生成长度      编译器     虚拟机    有效性 (%)   平均生成长度
                   OpenJDK 17    5      4      82.38       625.0      3       0      33.78      2 204.7
                   OpenJDK 21    3      1      82.31       611.6      1       1      31.49      2 241.8
                     总计          8      5       -           -         4       1       -          -

                    通过分析表     7  中的结果可以发现, LumiX     在缺陷检测上的效果显著优于           w/o LumiXseg. 在两个  OpenJDK  版
                 本的实验中, LumiX   累计检测到     12  个不一致缺陷, 而   w/o LumiXseg  仅检测到  5  个不一致缺陷. 通过进一步分析两
                 个方法的有效性和平均生成长度指标发现, 在生成完整的测试程序后, w/o LumiXseg                     生成的测试程序长度远高于
                 LumiX. 例如, 在  OpenJDK 17  的实验中, w/o LumiXseg  平均生成的测试程序长度是      LumiX  的  3.5  倍. 同时, 过长的
                 生成内容导致大模型产生了幻觉的累积, 导致其生成代码的有效性显著降低. 在                           OpenJDK 17  及  21  的实验中,
                 w/o LumiXseg  生成测试程序的有效性相较于        LumiX  下降了  49%  以上. 这也进一步验证了现有工作中, 大模型在
                 面对长文本或结构复杂任务时, 其准确性和语义一致性会显著下降, 生成代码越长, 正确性和有效性越低的结论.
                 随着有效性的降低, w/o LumiXseg     的不一致缺陷检测效果也随之显著降低. 总的说来, 该实验结果验证了                      LumiX
                 中代码片段生成组件的有效性: 该组件可以有效提升生成测试程序的有效性, 从而提升不一致缺陷的检测能力.
                    表  8  展示了使用不同大模型替换        LumiX  中使用的通义千问-Max (Qwen-Max-0125) 大模型后的方法效果对
                 比. 通过对比表    7  中原始  LumiX  的效果可以发现, 大模型的选择对         LumiX  的效果有一定的影响. 具体而言, 当将
                 通义千问-Max    替换为  DeepSeek-V3  后, LumiX  在两个版本上共减少了      3  个缺陷的检测, 同时生成测试程序的有
                 效性下降超过     13%. 值得注意的是, 虽然     Qwen2.5-72b  模型相较于通义千问-Max      效果较差, 但其在缺陷检测和有
                 效性方面与    DeepSeek-V3 (模型参数  671B) 取得了相似的结果. 这表明在本任务中, 72B          规模的大模型已经能够取
                 得较为理想的效果. 但随着模型参数的进一步减小, 性能下降趋势则更为明显. 在                       Qwen2.5-7b  模型上, LumiX  的整
                 体表现显著下降, 有效性最高仅为          27.17%. 尽管如此, 即便在参数规模较小的情况下, LumiX           仍然能够检测出一定
                 数量的不一致缺陷. 总的来说, 该实验验证了             LumiX  方法本身的有效性, 同时也表明大模型的选择会在一定程度
                 上影响其具体表现. 在实际测试应用中, 可根据任务需求与计算资源预算, 灵活选择合适规模的大模型, 以在效果
                 与成本之间取得平衡.


                                              表 8 大模型替换实验结果对比分析

                                     DeepSeek-V3              Qwen2.5-72b               Qwen2.5-7b
                  OpenJDK 版本
                               编译器    虚拟机    有效性 (%)    编译器    虚拟机    有效性 (%)    编译器    虚拟机    有效性 (%)
                   OpenJDK 17    4      2      68.19      1      3      67.84      1      3      27.17
                   OpenJDK 21    2      1      68.68      4      1      73.21      2      1      26.37
                     总计          6      3       -         5      4       -         3      4       -
   24   25   26   27   28   29   30   31   32   33   34