Industry & PracticeResearch & Benchmarks
面向 代码 重 排序 的 置信 度 门 控 直 推 式 测试 生成
测试用例合成对于评估与排序大语言模型(LLM)生成的程序至关重要。然而,构造高质量测试用例仍然困难,因为可靠的期望输出往往难以获得。我们提出置信度门控直推式测试生成(Confidence-Gated Transducti
In this piece
面向代码重排序的置信度门控直推式测试生成(中文全译)
翻译说明:本文是 arXiv 论文 Confidence-Gated Transductive Test Generation for Code Reranking(arXiv:2609.12489)的中文全译,由智测团队翻译。原作者:Sungjae Lee、Youngsik Yoon、Seockbean Song、Siwei Wang、Wei Chen、Jungseul Ok。原文以 CC BY 4.0 许可发布。译文保留原文全部章节、数据与结论;参考文献列表从略。
作者与单位
- Sungjae Lee,浦项科技大学(POSTECH)计算机科学与工程系,韩国
- Youngsik Yoon,浦项科技大学(POSTECH)计算机科学与工程系,韩国
- Seockbean Song,浦项科技大学(POSTECH)人工智能研究生院,韩国
- Siwei Wang,微软亚洲研究院,中国
- Wei Chen,微软亚洲研究院,中国
- Jungseul Ok(通讯作者),浦项科技大学(POSTECH)计算机科学与工程系;浦项科技大学(POSTECH)人工智能研究生院,韩国
arXiv:2609.12489v1 [cs.AI],2026 年 9 月 11 日。许可:CC BY 4.0。
摘要
测试用例合成对于评估与排序大语言模型(LLM)生成的程序至关重要。然而,构造高质量测试用例仍然困难,因为可靠的期望输出往往难以获得。我们提出置信度门控直推式测试生成(Confidence-Gated Transductive Test Generation,CoTT):它首先使用高效的归纳式过程,仅当归纳置信度较低时才调用直推式生成。这种自适应设计提高了输出可靠性,并且只在需要时才分配额外计算。在代码重排序基准上,CoTT 在所报告的各项指标上优于既有基线,同时相对于对每个输入都施加直推式生成降低了成本。这些结果表明,基于置信度分配测试时计算,可以在单一高效 LLM 上取得有利的效率—效果权衡。
1 引言
图 1:CoTT 概览。 CoTT 使用归纳式生成来预测合成测试输入的期望输出,仅当归纳置信度较低时才调用直推式生成。这种置信度门控设计提高了输出可靠性,并且只在需要时才分配额外计算。
测试用例是评估与评分代码的基本工具(Chen et al., 2021;Austin et al., 2021;Chen et al., 2022;Yu et al., 2024)。随着大语言模型在代码生成上的快速进展,测试用例合成日益成为提供基于执行的信号、从而识别更优程序候选的重要组成部分(Ficek et al., 2025)。在实践中,当高质量人工编写的测试稀缺或不可用时,这一需求尤为突出,使合成测试成为基于执行的反馈的实用来源(Ni et al., 2023)。然而,先前工作大多主要关注改进代码生成,往往要么依赖数量有限的真实测试,要么依赖一小批简单生成的测试(Zhong et al., 2024;Yu et al., 2024)。
一条研究路线用高效 LLM 生成多个程序并执行它们,利用这些程序之间的一致性或共识来验证合成测试(Chen et al., 2022;Chen et al., 2024)。然而,当所生成的程序本身不可靠时,这类信号对于构造带有可靠期望输出的合成测试用例仍可能不足。另一条研究路线使用以输入为条件的生成,或由验证器引导的执行,来针对特定目标输入进行推理并评估候选输出(Lin et al., 2025;Lee et al., 2025a)。这些方法虽然有效,但可能需要额外训练、搜索或辅助模型计算。
使用单一高效 LLM、而不依赖更大且更昂贵的 LLM 来构造带有可靠期望输出的合成测试用例,提出了两个关键挑战。第一,提高测试质量所需要的,并不只是以同样方式扩大并行采样(Li et al., 2025);当期望输出估计不可靠时,需要一种更准确的机制,通过额外计算来修正这些估计。第二,这种更强的机制应当只在必要时触发,以便高效地分配额外计算(Li et al., 2024;Lee et al., 2025b)。从这个意义上说,测试构造既需要更好的期望输出,也需要决定额外计算在何时值得投入。
本文提出置信度门控直推式测试生成(CoTT),这是一种自适应方法,如图 1 所述,使用单一高效 LLM 构造带有可靠期望输出的合成测试用例。CoTT 并不均匀地扩展程序数量,而是仅在需要更强的期望输出估计时才分配额外计算。CoTT 把用于期望输出预测的归纳式过程,与用于针对特定输入生成程序的直推式过程结合起来,仅当归纳输出一致性表明置信度较低时才调用后者。该设计在单模型设定下仍然实用,并提高了用于代码重排序的合成测试的可靠性。跨数据集的实验表明,CoTT 提高了合成测试的期望输出可靠性,从而在单一高效 LLM 上带来更好的代码重排序。
2 相关工作
面向代码的合成验证与评分
近期工作使用合成测试、执行反馈以及学习得到的评判器,对 LLM 产生的代码候选进行评分或重排序(Zeng et al., 2025;Ma et al., 2025;Yu et al., 2024;Chen et al., 2022;Chen et al., 2024)。这些方法表明,合成验证是下游代码选择的关键组成部分,尤其是在高质量人工编写测试有限时。近期研究进一步主张,合成验证应被当作代码重排序的一个重要评估问题(Ficek et al., 2025)。我们的工作与这一路线最为接近,但把合成测试的可靠性视为代码重排序的关键瓶颈,并直接在重排序基准上加以评估。
测试合成与预言机问题
测试合成的一个核心挑战是预言机问题:可靠的期望输出往往比测试输入本身更难获得。针对这一问题的现有方法大体分为两类。一类工作通过执行许多通用解候选、并以一致性或多数投票聚合其输出,来估计期望输出(Chen et al., 2022;Chen et al., 2024;Liu et al., 2025)。另一类工作依赖更强的、或以输入为条件的过程,对目标输入进行推理,或借助更强的外部模型选择并验证候选输出(Lee et al., 2025a;Lin et al., 2025)。这些方法虽然有效,但要么针对基于执行的共识已经足够可靠的设定,要么针对可以访问更强辅助模型的设定。
3 方法
我们提出置信度门控直推式测试生成(CoTT),这是一个自适应框架,使用单一高效 LLM 构造带有可靠期望输出的高质量测试用例。给定合成测试输入 \(x\),CoTT 首先用高效的归纳式过程预测其期望输出,仅当归纳估计不确定时才调用更昂贵的直推式过程。如图 1 所示,CoTT 对高置信输入使用归纳预测,仅对低置信输入切换为直推预测。所得期望输出用于构造测试用例,供下游代码评分与重排序使用。
归纳输出分布
对每个合成测试输入 \(x\),我们首先估计归纳输出分布:按指令 “Write a clean, efficient Python function ...”(如图 A1 所示)为原问题采样一组通用解候选,并在 \(x\) 上执行它们。令 \(n_{\mathrm{ind}}(y;x)\) 表示在 \(x\) 上执行后返回输出 \(y\) 的归纳样本数。经验归纳分布定义为
\[ p_{\mathrm{ind}}(y\mid x)=\frac{n_{\mathrm{ind}}(y;x)}{\sum_{y'}n_{\mathrm{ind}}(y';x)}. \tag{1} \]
相应的归纳置信度为
\[ c(x)=\max_{y}p_{\mathrm{ind}}(y\mid x). \tag{2} \]
直观上,\(c(x)\) 是出现最频繁的归纳输出所占的多数比例。当该值较高时,通用解候选集合已经为期望输出提供了可靠估计。
置信度门控的直推输出分布
当归纳置信度较低时,CoTT 使用指令 “Write a Python function for the exact input ...”(如图 A2 所示)触发专门针对目标输入 \(x\) 的直推式过程。在这一步中,模型在问题与特定目标调用两者的条件下生成实例专用程序,在 \(x\) 上执行它们,并形成直推输出分布
\[ p_{\mathrm{trans}}(y\mid x)=\frac{n_{\mathrm{trans}}(y;x)}{\sum_{y'}n_{\mathrm{trans}}(y';x)}, \tag{3} \]
其中 \(n_{\mathrm{trans}}(y;x)\) 统计有多少直推样本在 \(x\) 上产生输出 \(y\)。
给定置信度阈值 \(\tau\),CoTT 按如下方式选择最终期望输出:
\[ \hat{y}(x)= \begin{cases} \arg\max_{y}p_{\mathrm{ind}}(y\mid x), & \text{若 } c(x)\geq\tau,\\[4pt] \arg\max_{y}p_{\mathrm{trans}}(y\mid x), & \text{若 } c(x)<\tau. \end{cases} \tag{4} \]
因此,CoTT 并不把归纳分布与直推分布混合起来;相反,置信度门控为每个测试输入选择应信任哪一个分布,如图 1 与算法 A1 所示。给定阈值 \(\tau\),默认使用归纳预测,仅当归纳置信度较低时才调用直推式生成。在全部主要实验中,我们在各数据集上使用阈值 \(\tau=0.8\);超参数设置见表 A1。每个合成测试输入 \(x\) 与其预测输出 \(\hat{y}(x)\) 配对,形成测试用例 \((x,\hat{y}(x))\),用于在重排序中基于通过率执行并评分候选程序。
4 实验
我们在 HumanEval-R+ 与 MBPP-R+ 的完整数据集上,使用 Llama-3.1-8B-Instruct 评估 CoTT。遵循 Ficek et al. (2025),这些是由 HumanEval+ 与 MBPP+(Liu et al., 2023)派生的代码重排序基准:每个任务配有五份正确性各不相同的候选解,目标是恢复由参考测试套件所诱导的真实排序。我们关注的是测试输出生成:给定一组共享的合成输入,每种方法预测相应输出以形成测试用例,在这些测试用例上执行全部候选解,并按其通过率对候选排序。
我们遵循 Ficek et al. (2025) 报告 Top-1 准确率、Bottom-1 准确率与斯皮尔曼 \(\rho\)。前两项衡量排名最高与排名最低的候选是否与参考排序一致,斯皮尔曼 \(\rho\) 衡量与完整参考序的相关性。我们报告两个基准上的平均每题成本,由合成测试构造所用的全部输入与输出 LLM 词元计算,包括测试输入生成与期望输出生成。<sup>1</sup> 除非另有说明,所有方法使用同一组合成测试输入,因此比较隔离的是测试输出生成上的差异。我们通过从临时程序执行中选取高分歧种子、再用类型感知变异加以扩展来构造这些输入,使其具有挑战性与区分度,且不使用真实解。
<sup>1</sup> Llama-3.1-8B-Instruct 的价格(每 100 万输入词元 0.10 美元,每 100 万输出词元 0.10 美元)取自 https://artificialanalysis.ai/models/llama-3-1-instruct-8b(访问日期:2026 年 3 月 16 日)。
基线
我们将 CoTT 与测试输出生成中有代表性的直推式与归纳式基线进行比较。CoT(Wei et al., 2022)以单次思维链过程为每个输入预测期望输出。SOL-VER(Lin et al., 2025)与 SYNTRA(Lee et al., 2025a)是直推式基线,它们以多次思维链采样进行以输入为条件的输出生成,或在候选之间做输出选择。rStar-Coder(Liu et al., 2025)是我们的归纳式基线:它采样多个通用程序,在每个合成输入上执行它们,并以多数投票预测期望输出。按我们的术语,这对应于归纳方法,因为它从通用候选程序而非针对特定输入的推理中导出输出。对于包含训练或下游优化组件的基线,我们只在同一重排序流程下应用其测试输出生成组件。TT w/o Gating 是始终直推的变体:它对每个合成测试输入都调用直推式生成,并用 \(\arg\max_{y}p_{\mathrm{trans}}(y\mid x)\) 预测其期望输出。该变体用于隔离置信度门控的作用。
实验结果
表 1:测试输出生成方法在 HumanEval-R+ 与 MBPP-R+ 上的重排序性能与平均成本比较。 指标包括 Top-1 准确率、Bottom-1 准确率、斯皮尔曼 \(\rho\) 与平均成本(美元)。加粗表示最优结果,下划线表示次优结果。
| 测试输出生成方法 | HumanEval-R+ Top-1 ↑ | HumanEval-R+ Bottom-1 ↑ | HumanEval-R+ 斯皮尔曼 ↑ | MBPP-R+ Top-1 ↑ | MBPP-R+ Bottom-1 ↑ | MBPP-R+ 斯皮尔曼 ↑ | 平均成本 ↓ |
|---|---|---|---|---|---|---|---|
| CoT,Wei et al. (2022) | 42.5 | 48.3 | 0.440 | 42.0 | 43.9 | 0.349 | <u>0.060</u> |
| SOL-VER,Lin et al. (2025) | 41.1 | 52.1 | 0.464 | 42.8 | 47.1 | 0.395 | 0.080 |
| SYNTRA,Lee et al. (2025a) | 56.6 | 59.8 | 0.585 | 51.8 | 56.7 | 0.539 | 0.069 |
| rStar-Coder,Liu et al. (2025) | 59.8 | 65.4 | 0.611 | <u>59.8</u> | <u>58.1</u> | 0.559 | 0.058 |
| TT w/o Gating(本文) | 63.1 | <u>66.2</u> | 0.676 | 58.5 | 56.1 | <u>0.576</u> | 0.077 |
| CoTT(本文) | <u>62.5</u> | 66.7 | <u>0.650</u> | 61.6 | 58.7 | 0.580 | 0.065 |
表 1 表明,我们的方法相对于既有基线取得了较强的重排序性能。在 HumanEval-R+ 上,TT w/o Gating 取得最高的 Top-1 准确率与斯皮尔曼 \(\rho\),而 CoTT 取得最高的 Bottom-1 准确率。在 MBPP-R+ 上,CoTT 在三项重排序指标上均取得最优结果。与 TT w/o Gating 相比,CoTT 将平均推理成本从 0.077 美元降至 0.065 美元,同时在 HumanEval-R+ 上保留了其大部分收益,并在 MBPP-R+ 上表现更好。因此,置信度门控并非一律优于始终直推的生成,但提供了有利的效率—效果权衡。我们还通过在两个基准上扫描置信度阈值 \(\tau\) 进行了敏感性分析;结果见附录 E。关于替代置信度分数以及每题成本变化的进一步分析见附录 G 与附录 F。
5 分析:CoTT 在何时有帮助?
置信度门控的有效性
我们首先分析置信度门控为何改善效率—准确率权衡。回想一下,CoTT 使用归纳置信度
\[ c(x)=\max_{y}p_{\mathrm{ind}}(y\mid x) \]
来决定是信任 \(\arg\max_{y}p_{\mathrm{ind}}(y\mid x)\),还是调用直推式修正并使用 \(\arg\max_{y}p_{\mathrm{trans}}(y\mid x)\)。图 2 表明,当只有归纳预测正确时,\(c(x)\) 通常较高,因此 \(p_{\mathrm{ind}}\) 已经可靠,直推往往不必要。相反,当只有直推预测正确时,\(c(x)\) 低得多,表明 \(p_{\mathrm{ind}}\) 不可靠,切换到 \(p_{\mathrm{trans}}\) 是有益的。这支持把归纳多数比例作为有效触发器,只在需要时分配额外计算。
案例研究:直推何时有帮助
考虑 MBPP 问题 “Write a function to find the Eulerian number a(n, m).”。对于合成输入 eulerian_num(0, 10),其正确输出为 0,归纳预测为 1,而直推预测为 0。尽管所生成的程序在一般情况下都不正确,直推程序增加了一条针对该输入的边界条件,正确处理了 \(n=0\),而归纳程序没有做到这一点。因此,即便不完美的直推程序,也可以通过暴露归纳预测单独会漏掉的、针对目标的错误,提供有用的互补信号。这说明,即使通用归纳解较弱,\(p_{\mathrm{trans}}\) 仍能恢复正确的期望输出。相应提示词与生成结果见图 A1、A2、A3 与 A4。
图 2: 在两种预测不一致的合成测试输入上,归纳与直推多数比例分布的比较。上方面板包含只有归纳预测正确的输入,下方面板包含只有直推预测正确的输入。两个分布分别对应 \(\max_{y}p_{\mathrm{ind}}(y\mid x)\) 与 \(\max_{y}p_{\mathrm{trans}}(y\mid x)\)。
案例研究:归纳何时已经足够
我们也观察到相反的模式。对于 MBPP 问题 “Write a python function to find quotient of two numbers (rounded down to the nearest integer).”,以及合成输入 find(10, -2),归纳预测是正确的,直推预测则不是。这里,归纳样本一致地恢复了正确规则 dividend // divisor,而直推程序不必要地引入了负号,产生类似 a // -b 的规则。归纳执行在该输入上是一致的,得到 \(c(x)=1.0\)。这意味着 CoTT 会保留 \(\arg\max_{y}p_{\mathrm{ind}}(y\mid x)\),而不是调用直推。这个例子表明,当归纳预测可靠时,置信度门控会保留高效的归纳路径。相应生成结果见图 A5 与 A6。
6 结论
我们提出 CoTT,这是一个自适应框架,用单一高效 LLM 构造用于代码评估与重排序的合成测试用例。CoTT 仅在归纳置信度较低时有选择地调用直推式生成,把额外计算分配给不确定的测试输入。在两个数据集上,CoTT 以低于始终直推生成的成本保持了较强的重排序性能,从而提供了有利的效率—效果权衡。未来工作的一个有趣方向,是利用 CoTT 的构造性反馈使代码生成与测试生成共同演化,迭代地同时改进程序与测试。
局限性
本研究有若干局限。第一,尽管 CoTT 不依赖更大的外部 LLM,但在相关代码文档或检索增强上下文等外部信息源可用时,它仍可能从中进一步受益。第二,我们没有探索把 CoTT 与代码生成集成,以形成代码与测试共同演化的生成机制。在这种设定下,更高质量的合成测试可能为迭代式代码改进提供有用反馈。第三,我们使用单一高效 LLM,在两个函数级 Python 代码重排序基准上评估 CoTT。这一受控设定隔离了测试预言生成,但结果并不能确立跨模型稳健性,也不能推广到更现实的仓库级或项目级任务。第四,CoTT 面向沙箱化的代码重排序设定,其中生成的程序在超时约束下执行。因此,当代码执行受限、不可用或计算代价很高时,该方法的适用性可能较低。
致谢
本工作得到韩国政府(科学技术信息通信部,MSIT)资助、由信息与通信技术规划评估院(IITP)拨款支持的项目(RS-2019-II191906,人工智能研究生院计划(POSTECH);RS-2024-00436680,数字领域全球研究支持计划;RS-2024-00509258,全球人工智能前沿实验室)。本工作亦得到韩国政府(科学技术信息通信部)资助、由 IITP(信息与通信技术规划评估院)—ITRC(信息技术研究中心)拨款支持(IITP-2026-RS-2024-00437866)。本项目还得到微软亚洲研究院的支持。
人工智能辅助
我们仅使用大语言模型改进稿件的清晰度、语法与文风,范围限于 “Assistance purely with the language of the paper”(纯粹协助论文的语言)。本文报告的全部科学主张、实验设计与实证结果均为作者的原创工作。
正文引用了附录中的算法 A1、表 A1、图 A1–A6,以及附录 E、F、G 的分析,但所提供的论文文本在本节之后结束,未包含附录 A–G 的正文,故此处不补写附录内容。参考文献列表从略。
署名与许可
- 论文:Confidence-Gated Transductive Test Generation for Code Reranking
- 链接:https://arxiv.org/abs/2609.12489
- 许可:CC BY 4.0
- 译者:智测团队
Found it useful? Pass it on
Scan with WeChat to open it on your phone and forward it.