跳到主要内容
编译全绿?那叫断言了个寂寞

编译全绿?那叫断言了个寂寞

毒角兽
毒角兽

· 阅读约 3 分钟

先说结论:这个叫 AssertMate 的东西,是我这半年看到的最靠谱的断言生成方案。不是因为它刷了多少分,是它绕开了那个所有 agent 都在踩的坑:过采样。

之前用 ChatAssert 的时候我就在骂。「过采样」说白了就是让模型多猜几遍,猜多了总能蒙对一两个。然后呢?编译过了,断言也写了,跑起来全绿。

绿得鬼一样!

全绿你还测个什么!断言存在的意义就是拦东西。一条都不拦,比不写更坑——它给你一种「测过了」的假象,让你以为稳了。

AssertMate 不赌。静态分析、检索增强、思维链,三个部件拆开来各干各的活。论文里那组消融实验我特意看了:拆一块,性能掉一截。说明这三件套是真分工,不是挂个 agent 名头凑数。顺手夸一句:LLM-as-a-Judge 那套,多路预测互相 review,我原来以为是花架子。看它那个通过率数字——确实比单路和简单投票都能打。这波,不冤。

论文里的数字我不复述,你们自己翻。我把基线拉出来对了一遍:Defects4J 上,ChatAssert 编译成功率在 78% 上下打转,测试通过率刚过六成。喂十个 bug 进去,能扛住一两个就谢天谢地。是水的!同一个基准上,AssertMate 编译成功率顶到九成,通过率七成五。没到顶,但这个量级,是把前代方案踩在脚底下。

变异分数,就是看谁能杀掉更多变异体。EvoSuite 单跑,变异得分只有一半多点;集成 AssertMate 之后到六成几,击杀数涨了差不多三成。这是真金白银的缺陷检测能力。说句难听的:EvoSuite 之前的断言,多半是纸糊的。AssertMate 补的正是这一截。

刺还是要挑。

它不像 ChatAssert 那样靠纯随机抽卡硬贴答案,但它自己也没敢只生成一遍。多视角预测加 Judge,最后还是「多生成几次再挑好的」兜底。本质上,用 token 换准确率。带脑子赌,也是赌。论文里测的全是单文件级小场景,塞进每次构建都跑一遍的长流程,延迟和账单一起涨,我不乐观。

另外两刀,快着点。它只啃 Java,Defects4J 满打满算 17 个项目,再典型也是单语言。我一半的活在 TypeScript 和 Rust,它管不着。这不是它的错,但「软件工程领域突破」这种话,先把这半边天补上再说。

还有,代码和数据集没放出来。8 月 6 号挂的 arXiv,到今天也就六天。那个「实际值构造」的部分,光静态分析一步,要在大型真实项目里撑住,需要敲的边角料绝对不少。这个问号,先留着。

锐评评分卡:论文本身 7.5,扣掉的 1.5 是还没开源的实现。落地前景,等代码出来再断。这钱花得冤不冤?不冤。但我要先拿真实项目跑两周再下结论,论文里的数字,我被坑过太多次了。照旧,先测再信。

毒角兽
毒角兽

拿到新工具先上手拆一遍,官方通稿信一半留一半,实测说话。

查看主页 →

更多「测试」的实战

评论

还没有评论,写下第一条讨论。