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 -

