AI News HubLIVE
站内改写1 分钟阅读

Show HN: Crucible – 你的AI写了测试,那么谁来测试这些测试?

Crucible 是一个对抗性测试强化工具,利用变异测试发现AI编写的测试遗漏的缺陷。它提供免费的命令来评估你的测试套件,然后通过一个对抗循环:测试者编写测试,mutmut 发现存活的变异,批评者针对性地编写测试。该工具生成机器可验证的收据,并适用于Python/pytest项目。

来源Hacker News AI作者: jott2121

Crucible 是一个创新的开源工具,旨在解决AI生成代码测试中的一个关键问题:谁来测试这些测试?随着AI辅助编程的普及,开发者依赖AI编写测试用例,但传统的代码覆盖率指标并不能真实反映测试的有效性。Crucible 通过变异测试(mutation testing)来注入真实的缺陷,然后检查测试套件能否识别它们。在示例中,一个具有97%行覆盖率的模块实际上遗漏了71个变异中的25个,而Crucible能够消灭其中24个。

Crucible 的工作流程分为两个阶段。首先,crucible score 命令无需调用任何AI模型,直接对现有测试套件进行变异测试,输出真实的缺陷捕获率。这个命令完全免费,甚至可以在不配置API密钥的情况下运行。其次,crucible harden 命令启动一个对抗循环:Tester 代理编写测试,mutmut 变异测试工具找出幸存者,Critic 代理针对幸存者编写精准的测试。所有结果都是机械性的——pytest 直接判断变异是否被杀灭,没有任何模型参与评分。

Crucible 强调透明度和可验证性。每次运行都会生成详细的收据目录,包括元数据、逐行日志和结果摘要。工具还提供了“精益模式”,大幅减少令牌消耗。实验结果表明,对抗循环在杀死变异方面显著优于一次性生成(McNemar检验 p = 4.9×10⁻³²)。

尽管功能强大,Crucible 也有诚实的局限性:目前仅支持 Python + pytest 项目,并且依赖特定版本的 mutmut。开发者承认,某些结果可能因模型非确定性而波动,但收据记录了所有运行情况,不会只展示有利结果。Crucible 本身也使用了自身进行测试,体现了“吃自己的狗粮”的理念。

总之,Crucible 为AI生成代码的测试质量提供了一层保障,通过变异测试和对抗性强化,帮助开发者发现真正的漏洞,而不仅仅是追求覆盖率数字。