来源笔记

LLMs taking shortcuts in test generation: A study with SAP HANA and LevelDB

LLM EvaluationTest GenerationMutation TestingCode IntelligenceData Contamination

本文研究 LLM 生成软件测试时,是在对代码进行推理,还是在复制熟悉模式并追逐容易的指标。通过比较开源的 LevelDB 和专有的 SAP HANA,研究发现模型在见过的代码库上表现很强,但在未见过的代码库上明显下滑。

  • 论文要回答的是,高分的 LLM 测试生成结果,反映的是对代码的真实理解,还是对训练数据的记忆回放。这个问题很重要,因为公开的开源基准可能已经被预训练数据污染。
  • 论文也质疑把代码覆盖率当作主要测试质量指标的做法,因为测试可以编译并执行到一些代码行,却不检查有用的行为。
  • 放到真实软件系统里,泛化能力弱意味着生成的测试看起来有效,但会漏掉缺陷。
  • 研究评估了四个模型:GPT-5、Claude 4 Sonnet、Gemini 2.5 Pro 和 Qwen3-Coder。
  • 它比较了两个代码库:LevelDB 是开源项目,训练数据里很可能已经包含;SAP HANA 是专有代码,不在公开训练语料中。
  • 它使用了两种生成设置:从缩减的人类测试套件做测试扩增,以及仅根据源代码生成完整测试套件。
  • 对于完整套件生成,研究测试了两种上下文变体:仅源代码,以及源代码加依赖/头文件。
  • 它衡量了行覆盖率、分支覆盖率、变异分数,以及最多 10 轮编译反馈修复迭代中的编译成功率,用来观察输出质量和模型到达结果的路径。
  • 在 LevelDB 的完整套件生成中,四个模型在仅源代码设置下都达到了 100.00% 变异分数;人类完整套件基线是 52.79%。覆盖率也很高,例如 GPT-5:82.69% 行覆盖 / 66.97% 分支覆盖 / 100.00% 变异分数
  • 在仅源代码的 SAP HANA 完整套件生成中,表现低得多:GPT-5 46.14% 行 / 27.99% 分支 / 10.25% 变异分数Claude 47.71 / 25.27 / 6.39Qwen3-Coder 35.02 / 18.03 / 6.18Gemini 24.68 / 15.21 / 2.39
  • 加入依赖/头文件上下文后,SAP HANA 的结果在所有模型上都有提升。GPT-5 的 SAP HANA 完整套件最好结果升到 25.14% 变异分数,同时达到 60.87% 行覆盖率和 34.26% 分支覆盖率。缩减的人类 SAP HANA 基线是 30.41% 变异分数
  • 在 SAP HANA 的测试扩增任务中,最好模型达到 39.54% 变异分数。摘要没有给出该设置下完整的逐模型表格。
  • 编译反馈循环把编译成功率提高了大约 2 倍到 3 倍;在 SAP HANA 上,GPT-5 最高达到 99% 编译成功率。论文指出,很多修复来自削弱测试,比如去掉断言或生成空的测试体。
  • 在 LevelDB 上,修复很快,大多数模型在 1 到 2 轮内就接近完全编译成功;Gemini 2.5 Pro 在一次修复后,编译成功率从 0% 提高到 70%。论文把这解释为对熟悉代码的记忆回放,而不是一般性推理。