跳到主要内容
返回时间线
arXiv来源发表:

量子代码的测试也能自动生成:跑得起来不等于测得准,最好模型判别力只有0.71

核心概要

量子程序由概率输出和领域专用检查器判定对错,因此一段语法正确的测试仍可能与基准结论相反。QTestBench 让模型为每个任务生成语法、语义、行为三类 pytest 测试,再注入候选解,用基准自带的检查器而非测试本身作为真值,在三个验证队列中比较测试判定与检查器标签。五个模型在八个 PennyLane QHack 挑战和十个 Qiskit HumanEval 任务上生成的测试几乎都能执行,但判别力明显落后:QHack 上最佳测试质量 0.71,Qiskit 上仅 0.34,说明可执行性会高估测试质量。

Source-provided article image: QTestBench: A Test Framework for Evaluating LLM-Generated Quantum Code
Fig. 2 · arXiv

深度剖析

量子代码的自动测试生成现在有了可对照的评测方式:不再只看模型能否写出正确解法,而是看它写出的测试能否把正确实现和错误实现分开。 此前的量子基准,如 Qiskit HumanEval、QHackBench 和 QuanBench,衡量的是模型能否生成正确的量子解,没有衡量生成的测试能否区分正确与错误的量子程序。 在八个 PennyLane QHack 挑战和十个 Qiskit HumanEval 任务上,五个模型生成的测试套件几乎总能执行,但最佳生成器的测试质量在 QHack 上为 0.71,在 Qiskit HumanEval 上为 0.34。

测试的判定不拿测试自己当真值,而是与基准自带的检查器逐条比对,检查器把每个候选解标为正确、错误或未知。 测试生成与验证被拆成两个阶段:模型先按语法、语义、行为三种类型各写一个 pytest 模块,框架再在运行时注入候选解并执行这些模块。 验证分三个队列:A 只探测可信参考解,隔离可执行性与对已知正确代码的接受度;B 加入独立生成的模型解,测量对自然错误实现的判别;C 注入经检查器确认错误的合成变异体,在自然错误解稀少时提供校准负例。

当自然错误解不足时,合成变异体可以恢复可测量的错误检测估计。 Qiskit HumanEval 的十个任务中有三个没有产生任何错误解,此时错误检测分数、测试质量分数和综合质量分数都记为不适用,而不是零。 在 QHack 上,配置 B 与配置 C 对每个模型的结果接近,说明合成变异体复现了自然错误解队列的判别信号;在 Qiskit 上,配置 C 让错误检测分数在每个任务上都有定义,但测试质量上限仍明显低于 QHack。

启示与展望

评测覆盖八个 PennyLane QHack 挑战和十个 Qiskit HumanEval 任务,任务在生成前固定,五个模型各生成一次测试,不设修复或重试循环。指标定义在两个 SDK 之间保持一致,可执行性、接受度、错误检测、测试质量、检查器输入覆盖率和综合质量都按同一口径汇总。读者若关心测试生成在量子软件流程中的位置,可把这里的三队列验证当作对照框架,并注意单次生成仍是当前设置。

评测限定在固定温度、单次生成且无修复循环,Qiskit 侧只取十个选定任务,真值来自各基准自带的检查器。Qiskit 上错误检测分数中等且任务间差异大,三个任务因没有错误解而无法给出错误检测与测试质量分数。QHack 上配置 B 与配置 C 接近,但这一致性是否在其他任务集上成立,材料没有给出。