LLM 生成 测试 套 件 的 覆盖 率 与 变异 分数 是否 与其 有效性 相关? (可 复现 性 研究) (上 篇)
大语言模型(LLM)的最新进展,推动了利用 LLM 自动生成测试的研究兴趣。既有工作通常用代码覆盖率、变异分数等代理指标来评估所生成的测试套件。然而,Inozemtseva 等人以及 Papadakis 等人的研究表明:
本文目录
LLM 生成测试套件的覆盖率与变异分数是否与其有效性相关?(可复现性研究)(中文全译·上篇)
翻译说明:本文是 arXiv 论文 Do Coverage and Mutation Scores of LLM-Generated Test Suites Correlate with Their Effectiveness?(arXiv:2607.22880)的中文全译,由智测团队翻译。原作者:Junda Zhao、Shurui Zhou、Eldan Cohen。原文以 CC BY 4.0 许可发布。译文保留原文全部章节、数据与结论;参考文献列表从略。
本文超长,分上下两篇。下篇:https://openqa.cn/articles/coverage-mutation-correlation-zh-part2
题录:arXiv:2607.22880v1 [cs.SE],2026 年 7 月 24 日。DOI:10.1145/3832093。期刊:PACMSE,第 3 卷,ISSTA(ISSTA00210,issta26main-p17-p)。CCS:软件及其工程——软件测试与调试;软件及其工程——经验性软件确认;计算方法论——自然语言处理。收稿日期:2026-06-25。许可:CC BY 4.0。
作者
- Junda Zhao,多伦多大学机械工程与工业工程系,加拿大多伦多。邮箱:junda.zhao@mail.utoronto.ca
- Shurui Zhou,多伦多大学电气与计算机工程系,加拿大多伦多。邮箱:shurui.zhou@utoronto.ca
- Eldan Cohen,多伦多大学机械工程与工业工程系,加拿大多伦多。邮箱:eldan.cohen@utoronto.ca
摘要
大语言模型(LLM)的最新进展,推动了利用 LLM 自动生成测试的研究兴趣。既有工作通常用代码覆盖率、变异分数等代理指标来评估所生成的测试套件。然而,Inozemtseva 等人以及 Papadakis 等人的研究表明:对人工编写的测试而言,一旦控制测试套件规模,覆盖率、变异与真实缺陷检测之间的相关性会在很大程度上消失,从而对基于代理指标的评估有效性提出质疑。鉴于当前主流的基于 LLM 的测试生成工作流与传统方法差异很大,这些结论能否迁移到 LLM 生成的测试上,目前仍不清楚。
本文使用由一组多样化 LLM 生成的大量测试套件,对上述两项先前工作进行大规模复现研究,并重新考察覆盖率、变异与真实缺陷检测有效性之间的关系。我们的发现与先前结果有实质性分歧。我们表明,覆盖率与变异的有用性高度依赖情境:在可以合理假定提供给 LLM 的代码无缺陷的回归式设定中,这些指标在跨模型比较时能够提供有意义的信号;而在另一种常见情形中——被测代码本身可能已经含有缺陷,目标是暴露被测代码中的缺陷——它们不再是可靠的指示器。我们还发现,几乎没有证据表明测试套件规模是 LLM 生成测试中覆盖率、变异与真实缺陷检测之间相关性的主导混杂因素。基于这些发现,我们讨论如何解读先前研究的结果,并为评估基于 LLM 的测试生成提供可操作的指导。
关键词:代码覆盖率、变异测试、测试有效性、测试生成、大语言模型、复现研究
1. 引言
软件测试在软件质量保障中不可或缺,但手工创建并维护大规模测试套件仍然耗费资源且容易出错,这持续推动着对该过程自动化的兴趣。大语言模型(LLM)的最新进展,激发了使用这些模型自动生成测试套件的研究兴趣(Chen 等人,2024;Yuan 等人,2024;Dakhel 等人,2024;Yang 等人,2024;Schäfer 等人,2024)。在这一方向上,LLM 生成测试套件的有效性最常使用代码覆盖率指标(例如语句覆盖、分支覆盖和修正条件覆盖)来评估,并辅以生成测试数量、编译成功率、通过率等基本统计(Chen 等人,2024;Yuan 等人,2024;Dakhel 等人,2024;Yang 等人,2024;Schäfer 等人,2024)。这些指标对测试充分性提供了有用信号,但并不直接度量所生成的测试能否暴露真实缺陷(Zhang 等人,2025)。为超越覆盖率,一些研究采用变异分数作为测试有效性的代理,利用其在不需要人工整理真实缺陷的情况下近似缺陷检测能力的特点(Dakhel 等人,2024;Zhang 等人,2024;Abdullin 等人,2025)。然而,尽管变异测试是一项成熟技术,它作为真实缺陷检测替代物的有效性仍有争议,因为变异算子可能无法反映实践中真实缺陷的特征或复杂度(Papadakis 等人,2018)。总体而言,在基于 LLM 的测试生成文献中,对测试核心目标——即所生成测试套件的真实缺陷检测有效性——的直接评估仍然相对有限。
这自然引出一个问题:这些被广泛使用的代理指标,是否真的能够指示 LLM 生成测试套件的缺陷检测有效性。测试文献已大量考察人工编写测试中覆盖率、变异与缺陷检测之间的关系,但结论并不一致(Gligoric 等人,2013;Frankl 与 Iakounenko,1998;Cai 与 Lyu,2005;Just 等人,2014b;Andrews 等人,2005)。值得注意的是,Inozemtseva 等人(Inozemtseva 与 Holmes,2014)表明,一旦控制测试套件规模,覆盖率与测试有效性(以变异作为代理)之间的相关性会在很大程度上消失;Papadakis 等人(Papadakis 等人,2018)对变异分数与真实缺陷检测有效性之间的关系报告了类似发现。这些结果对当前基于 LLM 的评估提出一个关键关切:如果覆盖率与变异分数并不能可靠地跟踪缺陷检测有效性,那么主要借助这些代理来评估 LLM 生成的测试就可能产生误导。与此同时,针对人工编写测试得出的结论能否迁移到 LLM 生成的测试,仍不确定。基于 LLM 的测试生成通常将被测代码作为主要提示输入(Chen 等人,2024;Yuan 等人,2024;Dakhel 等人,2024;Yang 等人,2024;Schäfer 等人,2024),从而形成以白盒为主的设定;这与许多人工编写测试不同——后者往往源自程序需求,而不是完全从实现综合而来(Jorgensen,2013)。这些因素共同要求我们专门重新考察:对 LLM 生成的测试套件而言,覆盖率与变异如何关联到真实缺陷检测。
本文对 Inozemtseva 等人与 Papadakis 等人的两项先前研究进行大规模复现,在 11 个前沿(SOTA)LLM 上重新考察 LLM 生成测试套件的测试套件规模、测试覆盖率、变异分数与真实缺陷检测有效性之间的关系。我们的研究聚焦于 LLM 生成的测试,而先前研究主要研究人工编写的测试;Papadakis 等人的研究中也包括由 EvoSuite 生成的测试。此外,LLM 生成的测试通常产生于以白盒为主的设定中,被测代码作为主要提示输入。该输入既可能无缺陷,也可能含有缺陷,这会显著影响所生成测试的行为(Huang 等人,2025),并促使我们进一步考察这一因素如何影响先前工作所研究的相关性。鉴于这些差异,我们将本研究框定为概念性复现(Shull 等人,2008;Carver 等人,2014),而非直接复现。具体而言,我们通过考察先前观察到的覆盖率、变异与真实缺陷检测有效性之间的相关性,在以无缺陷代码和含缺陷代码作为输入时,对 LLM 生成的测试是否仍然成立,来重新审视一组相似的研究问题,同时把研究程序调整到这一新设定。我们在第 3 节描述这些方法上的调整。
我们对 LLM 生成测试的结果,与两项先前研究的结论有实质性分歧;这里先概括主要结论。尽管 Inozemtseva 等人与 Papadakis 等人质疑覆盖率与变异指标能否可靠指示缺陷检测有效性,我们发现:当可以合理假定被测代码无缺陷、且目标是回归测试(即捕获未来代码变更引入的缺陷)时,即使控制了测试套件规模,这些指标仍可以提供信息。在该设定下,某些覆盖率指标与变异分数在跨模型比较时提供了有用信号。然而,在更一般、实践上更具挑战的设定中——无法保证提供给 LLM 的被测代码正确,且期望所生成的测试检测该代码中已存在的缺陷——覆盖率作为缺陷检测有效性的指示器变得不可靠,变异分析也不适用。此外,与两项先前研究不同,我们几乎没有发现证据表明 LLM 生成测试套件的规模(即测试数量)是覆盖率、变异分数与真实缺陷检测有效性之间关系的强混杂因素。
概括而言,本文作出如下贡献:
- 我们使用由 11 个 SOTA LLM 生成的超过 100,000 个测试用例,复现 Inozemtseva 等人与 Papadakis 等人关于覆盖率、变异与缺陷检测有效性之间关系的研究,并表明 LLM 生成测试所得到的相关性,与原研究在人工编写测试上报告的结果有实质性差异。
- 我们将 Inozemtseva 等人的研究从变异体扩展到真实世界缺陷,考察由无缺陷代码与含缺陷代码生成的测试套件中,覆盖率如何与真实缺陷检测相关。这使我们能够刻画:在提供给 LLM 的代码本身可能含有缺陷这一实践相关设定中,覆盖率—有效性关系如何变化。
- 基于我们的发现,我们讨论在 LLM 时代应如何解读覆盖率与变异指标,并为在未来工作中使用这些指标、以及评估 LLM 生成测试的质量,提供可操作的指导。
- 遵循复现研究的最佳实践,我们提供包含实现、生成数据与分析脚本的产物,以支持未来关于基于 LLM 的单元测试生成中覆盖率、变异与缺陷检测有效性的复现与二次研究。
表 1. 聚焦于评估 LLM 测试生成的研究。
| 引用 | 模型 | 数据集 | 指标 | 提示内容 | 含缺陷代码 |
|---|---|---|---|---|---|
| (Tufano 等人,2021) | BART | METHOD2TEST(Tufano 等人,2021)、Defects4J | 正确性、覆盖率 | 被测代码、代码上下文 | ✗ |
| (Schäfer 等人,2024) | GPT-3.5 | 公开代码仓库、Defects4J | 正确性、覆盖率 | 被测代码、代码上下文、示例用法 | ✗ |
| (Guilherme 与 Vincenzi,2023) | GPT-3.5-turbo | 公开代码仓库 | 正确性、覆盖率、变异 | 被测代码 | ✗ |
| (Rao 等人,2023) | GPT-2 | 公开代码仓库 | 正确性、覆盖率、词汇相似度 | 被测代码 | ✗ |
| (Tang 等人,2024) | GPT-3 | DynaMOSA(Panichella 等人,2018)、Defects4J | 正确性、覆盖率、缺陷检测、用户研究 | 被测代码 | ✗ |
| (Siddiq 等人,2024) | Codex、StarCoder、GPT-3.5-turbo | HumanEval(Chen 等人,2021)、SF110(Fraser 与 Arcuri,2014) | 正确性、覆盖率、测试风格 | 被测代码、代码上下文 | ✗ |
| (Yuan 等人,2024) | GPT-3.5-turbo | CodeSearchNet | 正确性、覆盖率、用户研究 | 被测代码、LLM 生成的代码意图 | ✗ |
| (Bhatia 等人,2024) | GPT-3.5 | 公开代码仓库 | 正确性、覆盖率 | 被测代码 | ✗ |
| (Yang 等人,2024) | 6 个模型 | Defects4J | 正确性、覆盖率、缺陷检测 | 被测代码、代码上下文 | ✗ |
| (Zhang 等人,2024) | CodeLlama、GPT-3.5、GPT-4 | 公开代码仓库 | 正确性、覆盖率、变异 | 被测代码、代码上下文 | ✗ |
| (Lops 等人,2025) | GPT-3.5-turbo、GPT-4 | Classes2Test(Lops 等人,2025) | 正确性、覆盖率、变异、测试风格 | 被测代码、代码上下文 | ✗ |
| (Shang 等人,2025) | 37 个模型 | METHOD2TEST、Defects4J、ATLAS(Watson 等人,2020)、Ceprot(Hu 等人,2023) | 正确性、词汇相似度 | 被测代码 | ✗ |
| (Jain 等人,2025) | 10 个模型 | TestGenEval(Jain 等人,2025) | 正确性、覆盖率、变异 | 被测代码、代码上下文 | ✗ |
| (Wang 等人,2025) | 17 个模型 | TestEval(Wang 等人,2025) | 正确性、覆盖率 | 被测代码 | ✗ |
| (Abdullin 等人,2025) | 4 个模型 | GitBug-Java(Silva 等人,2024) | 正确性、覆盖率、变异、缺陷检测 | 被测代码、代码上下文 | ✗ |
| (Huang 等人,2025) | 11 个模型 | HumanEval(Chen 等人,2021)、MBPP(Austin 等人,2021)、APPS(Hendrycks 等人,2021)、SWE-Bench(Jimenez 等人,2024)、BugsInPy(Widyasari 等人,2020) | 正确性、覆盖率、缺陷检测 | 被测代码、代码上下文、代码文档 | ✓ |
2. 相关工作
本节通过回顾近期关于评估基于 LLM 的单元测试生成的工作,为第 1 节的动机提供背景。我们聚焦于在广泛适用的设定中评估 LLM 测试生成能力的研究,因为这些工作往往得出更可推广的结论。我们排除那些提出特定技术以改进基于 LLM 的测试生成的方法论文章,因为它们通常假定预先定义的使用场景与成功标准(例如最大化覆盖率),并且常常在更狭窄的设定中评估,使其结论不如一般性评估研究那样可推广。我们依据关于基于 LLM 的测试生成的最新综述(Zhang 等人,2025)汇编所评述的研究,并在表 1 中加以汇总。
在所评述的研究中,正确性指标(能够编译或通过的测试的统计)与代码覆盖率是迄今最常报告的结果。五项研究报告了变异结果,四项评估了真实缺陷检测。我们还观察到,所有研究都将被测代码作为主要提示输入,这与以白盒为主的测试生成范式一致。最后,除 Huang 等人(Huang 等人,2025)外,没有先前研究考虑输入代码本身可能含有缺陷的设定。这些观察共同促使我们考察:常用评估指标(例如正确性、覆盖率与变异)是否能够指示缺陷检测有效性,以及当测试由含缺陷的输入生成时,它们是否仍然具有信息量。
一个自然的问题是,为什么这些研究汇聚到一组相似的评估指标上。我们的评述表明,这一评估设定可以追溯到最早的基于 Transformer 的单元测试生成工作(Tufano 等人,2021)。再往前追溯,我们还观察到,在 LLM 之前的时代,评估 EvoSuite 等自动化测试生成工具时也普遍采用相同的指标选择(Fraser 等人,2013;Rojas 等人,2015)。这些工具在很大程度上是白盒的,并生成编码所给程序版本行为的回归测试,通常假定输入代码无缺陷。在这一假定下,评估大体上局限于覆盖率与变异等代理指标,因为当被测代码被假定为正确时,直接在被测代码上度量真实缺陷检测并无意义。
然而在 LLM 时代,测试生成并不内在地局限于这一回归测试范式。与主要从实现推断测试的先前工具不同,LLM 在某些情况下可以推断超出代码本身的预期行为。例如,Huang 等人(Huang 等人,2025)表明,LLM 仍可以从含缺陷的代码生成能够检测缺陷的测试,尽管其频率低于从无缺陷代码生成时。Hossain 等人(Hossain 等人,2025)进一步表明,文档等额外上下文可以提升 LLM 从可能含缺陷的输入中推断预期行为的能力。这些发现共同表明,基于 LLM 的测试生成不必仅依赖被测代码,也不必依赖“实现是正确的”这一假定。尽管如此,对基于 LLM 的测试生成的大多数现有评估,在默认情况下很大程度上继承了 LLM 之前工具的这些评估设定;据我们所知,很少有研究明确考察这些指标在 LLM 设定中实际反映的是什么。因此我们认为,分析这些被广泛采用的指标对 LLM 生成测试的含义,对于正确解读先前结果、以及澄清从中能够(以及不能)得出哪些结论,是必要的。
3. 方法
3.1. 研究问题
我们围绕下列研究问题组织本研究:
- RQ1:对 LLM 生成的测试套件,测试覆盖率是否与变异分数相关?
我们在 LLM 设定中复现 Inozemtseva 等人的相关分析,考察测试套件规模与变异分数之间的关系、在未约束与规模受控套件下的覆盖率—变异相关性,以及不同覆盖准则之间的相关性。
- RQ2:对 LLM 生成的测试套件,测试覆盖率是否与真实缺陷检测有效性相关?
我们从变异走向真实缺陷,评估当有效性通过真实缺陷检测来度量时,RQ1 中观察到的相关性是否仍然成立。我们进一步考虑提供给 LLM 的代码含有缺陷这一实践相关设定,并分析由无缺陷代码与含缺陷代码生成的测试的覆盖率—缺陷检测相关性。[^1]
- RQ3:对 LLM 生成的测试套件,变异分数是否与真实缺陷检测有效性相关?
利用为 RQ1 与 RQ2 收集的数据,我们复现 Papadakis 等人关于变异—缺陷检测相关性的分析,以评估变异分数对 LLM 生成测试套件的真实缺陷检测是否具有预测性。
[^1]: 我们不在 RQ2 中对含缺陷代码进行变异测试,也不分析变异分数与缺陷检测之间的相关性,因为变异测试以被测代码上存在一个通过的(“绿色”)测试套件为前提;这会恰恰排除那些暴露被测代码内部缺陷的测试,从而掩盖正要检测的缺陷,并使所得变异分数失去意义。因此,变异分析在该设定中不适用。
3.2. 基准
本研究聚焦大型 Java 项目,遵循 Inozemtseva 等人的范围。具体而言,我们使用 Defects4J(Just 等人,2014a),这是一个被广泛采用的、来自开源 Java 项目(例如 JFreeChart 与 Apache Commons Lang)的真实缺陷基准,也是近期对自动化及基于 LLM 的单元测试生成进行评估时的常见选择(Tufano 等人,2021;Alagarsamy 等人,2024;Schäfer 等人,2024;Yang 等人,2024)。Papadakis 等人也曾使用 Defects4J 研究变异分数与真实故障检测有效性之间的关系。每个缺陷同时包含一个含缺陷版本及其对应的已修复(无缺陷)版本,以及作为测试预言的开发者编写测试。Defects4J v3.0 包含跨 17 个项目的 854 个缺陷,每个缺陷可能修改一个或多个方法;我们将这些被补丁修改的方法称为焦点方法。这些焦点方法构成被测单元,并形成我们提供给 LLM 以进行单元测试生成的核心代码上下文。
遵循先前关于评估基于 LLM 的单元测试生成的工作(Yang 等人,2024;Yuan 等人,2024;Schäfer 等人,2024),我们将测试生成与评估聚焦于焦点方法。为选择焦点方法,我们遵循先前研究的一般做法(Yang 等人,2024;Alagarsamy 等人,2024;Tufano 等人,2021),并依据下列准则进一步细化选择:
- 我们并不只保留 public 方法,而是保留所有非 private 的焦点方法,因为 public、protected 以及包私有方法都可以被放在同一包中的测试访问。
- 每个焦点方法必须同时存在于含缺陷版本与已修复版本中,以便进行有意义的比较;我们排除焦点方法在打补丁后被删除或新增的情形。
- 我们只保留其含缺陷版本会触发 Defects4J 中至少一个开发者编写的失败测试的焦点方法,以确保相应补丁反映的是功能性缺陷修复,而不是重构或仅针对性能的变更。
总计,我们整理后的基准包含横跨 Defects4J 全部 17 个项目的 318 个含缺陷焦点方法。
3.3. 模型
为支持全面而稳健的分析,我们评估来自六家主要开发者的 11 个前沿(SOTA)大语言模型,在可用时同时覆盖基础变体与推理变体。推理模型被训练为在给出答案之前显式执行多步推理,而基础模型则直接生成输出。对于可以在两种模式中运行的混合模型(例如 Claude 4 Sonnet(Anthropic,2025)),我们评估两种配置:启用推理与禁用推理。总体而言,这产生 13 种模型设定;对每种设定,我们为每个焦点方法的含缺陷版本与已修复版本都生成测试套件。这种模型与配置上的广度,降低了我们发现仅由单一模型家族或特定生成风格驱动的可能性,并使我们能够更可靠地考察:对 LLM 生成的单元测试而言,覆盖率与变异分数如何关联到真实缺陷检测。表 2 列出全部被评估的模型。
表 2. 本研究使用的 LLM。
| 开发者 | 模型名称 | 类型 | 是否开源 |
|---|---|---|---|
| Gemini 2.5 Pro(Google,2025b) | 推理 | ✗ | |
| Gemini 2.5 Flash(Google,2025a) | 混合 | ✗ | |
| Anthropic | Claude 4 Sonnet(Anthropic,2025) | 混合 | ✗ |
| xAI | Grok-4(xAI,2025b) | 推理 | ✗ |
| xAI | Grok-3(xAI,2025a) | 基础 | ✗ |
| OpenAI | GPT-4.1(OpenAI,2025a) | 基础 | ✗ |
| OpenAI | GPT-O4-mini(OpenAI,2025b) | 推理 | ✗ |
| DeepSeek | DeepSeek-V3(DeepSeek-AI,2025b) | 基础 | ✓ |
| DeepSeek | DeepSeek-R1(DeepSeek-AI,2025a) | 推理 | ✓ |
| Alibaba | Qwen3-Coder-Plus(Qwen Team,2025a) | 基础 | ✓ |
| Alibaba | Qwen3-Plus(Qwen Team,2025b) | 推理 | ✓ |
3.4. 测试生成工作流
为确保评估现实且可推广,我们采用一种紧随 Yang 等人(Yang 等人,2024)所提出的、用于评估 LLM 生成单元测试的综合流水线的测试生成工作流,涵盖提示构造与单元测试抽取。受其关于有效提示上下文的发现指导,我们纳入焦点方法周围额外的、易于获得的代码特征,包括其参数、所在类的构造函数、声明的字段以及其他方法,以及作为参数类型或返回类型出现的用户定义类的构造函数。焦点方法体是提示的核心组成部分。我们用一条将 LLM 定位为专业 Java 开发者的系统指令包裹这一上下文,并附加一条明确请求:为所提供的代码生成单元测试。受篇幅限制,此处省略完整提示模板;它可在我们的复现包中获得。
我们采用 Yang 等人的提示配置,原因有三。第一,Yang 等人评估了范围广泛的开源与闭源模型,支持其提示设计的一般性。第二,他们提供了关于额外代码上下文影响的广泛消融研究,展示了其所纳入的具体特征的效用。第三,所纳入的上下文可以仅从被测代码中抽取,无需人工检查,从而能够实现完全自动化的提示构造与测试生成流水线,这与通过自动化减轻开发者负担的实践目标一致。
对于从 LLM 输出中抽取单元测试,我们使用抽象语法树(AST)解析器(Tree-sitter(Brunsfeld,2018))来抽取所生成的单元测试及相关信息,例如 import 与辅助函数。然后,我们将抽取的内容与项目特定依赖,以及 JDK(例如 java.util)和 JUnit(例如 org.junit.Assert)所需的常见依赖相结合;这些依赖预先准备,以避免因缺少依赖而导致的编译问题。
我们将该流水线应用于每个 LLM 的每个焦点方法,得到 8,268 个生成的测试套件,共包含 101,123 个单独测试用例。
3.5. 测试套件构造
在测试套件构造上,我们遵循 Inozemtseva 等人与 Papadakis 等人的随机抽样策略,但对其加以调整,以反映更现实的测试套件构造过程。具体而言,我们不是从项目范围的测试池中抽样单个测试,而是在焦点方法层面抽样。我们避免项目级抽样,原因有二。第一,测试通常是为了行使某个特定焦点方法的不同方面而编写的,因此项目范围的抽样会把来自不相关套件的测试混在一起,并不能反映测试套件在实践中如何被构造和使用。第二,当这种混合套件被规模控制到很少数量的测试时,它们往往覆盖不了与给定方法相关的任何变异体,从而产生许多变异分数为 0 的套件,并向相关分析注入噪声。
具体来说,每次抽取时,我们从至少包含一个可编译测试的生成套件集合中,抽样 100 个焦点方法,每个焦点方法配以其对应的 LLM 生成测试套件。我们构造 1,000 次互不相同的抽取。在未约束设定中,我们保留每个被选套件中的全部测试,因为 LLM 自然会产生规模各异的套件。在规模受控设定中,由于大多数模型平均每个套件大约生成 10 个测试(图 1),我们通过选取 \(k \in \{3, 5, 10\}\)、并从每个被选套件中均匀随机保留 \(k\) 个测试来固定套件规模,抽样限于至少包含 \(k\) 个测试的套件。我们不考虑更小的 \(k\),因为非常小的套件经常覆盖不到焦点方法中的任何变异体,会重新引入上文所述的“无变异体覆盖”问题。我们也不采用更大的 \(k\),因为包含至少 \(k\) 个测试的套件过少,将使我们无法构造 1,000 次互不相同的抽取。
图 1. 不同模型所生成的每个测试套件中测试数量的箱线图。该图展示十三种被评估 LLM 配置各自生成的测试套件中,测试数量分布的箱线图。
3.6. 度量
对于分析所需的度量,我们大体遵循 Inozemtseva 等人与 Papadakis 等人所采用的工具与指标定义。我们用 CodeCover(cod,2025)度量覆盖率,收集语句覆盖、分支覆盖和修正条件覆盖(MCC)。我们用 PIT(Coles 等人,2016)度量变异,并按 Inozemtseva 等人的定义报告原始变异分数与归一化变异分数,同时针对我们的焦点方法设定作一处小调整。具体而言,Inozemtseva 等人将原始变异分数定义为被杀死的变异体除以针对整个受试项目生成的全部变异体;我们改为在与每个测试套件相关联的焦点方法所生成的变异体上计算该比值。他们的归一化变异分数——被杀死的变异体除以被该套件覆盖的变异体——则不加改动地采用。对于真实缺陷检测,与 Papadakis 等人相似,若某个含缺陷焦点方法的生成测试套件中至少包含一个有效测试——该测试在已修复版本上通过、在含缺陷版本上失败——则将该焦点方法标记为已被检测;我们将缺陷检测有效性(缺陷检测比率)报告为被检测到的含缺陷焦点方法所占比例。
由于我们的测试套件是按焦点方法生成的,我们以两种互补方式聚合覆盖率与变异。在平均聚合中,我们针对该方法计算每个焦点方法的覆盖率(或变异分数),然后取各焦点方法的均值。在累计聚合中,我们把所有焦点方法上被覆盖(或被杀死)的元素与元素总数相加,并计算一个全局比值。先前工作实际上在项目层面报告累计聚合,因为其分析基于项目范围的测试池。在我们的焦点方法设定中,累计值可能被少数语句、条件或变异体很多的焦点方法所主导,从而掩盖按方法的趋势。因此我们同时报告两种聚合方案,并且只在同一种聚合类型内部计算相关性(即平均对平均、累计对累计)。
3.7. 相关分析
为回答我们的研究问题,我们进行三项主要相关分析:(i)所生成测试套件的覆盖率对变异分数;(ii)由无缺陷代码与含缺陷代码生成的测试套件的覆盖率对真实缺陷检测;(iii)变异分数对真实缺陷检测。[^2] 作为(i)与(ii)的一部分,我们还像 Inozemtseva 等人那样,报告测试套件规模与变异分数之间、以及测试套件规模与缺陷检测比率之间的相关性,以评估套件规模是否混杂了其他指标之间的关系。
由多样化 LLM 生成的大量测试套件,也使我们能够从互补视角考察相关性。对每项相关分析,我们在三种粒度上报告结果。(1)合并:我们在跨所有模型汇集的焦点方法套件抽样抽取上计算相关性,提供一个混合了模型内变异与模型间变异的总体视图。(2)模型内:我们对每个模型分别重复同一分析,以刻画该关系在由单个 LLM 产生的套件之间如何表现。(3)模型间:我们并不像前两种视图(以及先前工作)那样抽取套件的随机组合,而是把每个模型所生成测试套件的统计(只考虑可编译测试)聚合为该模型的一个数据点——针对套件规模、覆盖率、变异与缺陷检测等指标——然后跨模型计算相关性。尽管该视图样本量较小,它仍能揭示统计上有意义的模式,并有助于厘清所观察到的相关性主要是由模型之间的差异驱动,还是由模型内部的变异驱动。
[^2]: 我们使用与 Inozemtseva 等人相同的 Guilford 量表(Guilford,1956)作文字描述:绝对值 \(< 0.4\) 的相关为“弱”(低),\(0.4\)–\(0.7\) 为“中等”,\(0.7\)–\(0.9\) 为“强”,\(> 0.9\) 为“非常强”。
下篇继续:LLM 生成测试套件的覆盖率与变异分数是否与其有效性相关(下)。
觉得有用,转给同事
微信扫码
用微信扫一扫,在手机上打开后即可转发。