AI宝库

AI宝库首页 › AI 资讯 › 登陆前捕捉虫:JiT测试的全方位人行走

登陆前捕捉虫:JiT测试的全方位人行走

来源:Meta Engineering · 发布时间:10-30 · 由 AI宝库每小时自动聚合

去年我们分享了我们利用大型语言模型捕捉苍蝇上的虫子的工作

在去年,我们一直分享我们的工作,利用大型语言模型捕捉苍蝇上的虫子

现在,我们分享我们所看到的结果和积极影响

- 我们的论文“在Meta进行实时捕获试验”,充分详述了我们最初的部署和试验情况。

每一个代码的更改都改进了我们的平台,但也增加了推出的新复杂性。 Meta的数以亿计的代码线不断演变,在代码获得之前积极主动地抓住风险,使我们能够更早地识别出风险,更有效地作出反应,并大规模提供可靠的经验。

在去年,我们分享了运用大型语言模型(LLMs)生成软件测试的研究。 更具体地说,我们与Just-in-Tests(Jit Tests)分享了我们的工作,这是一种全新的测试方法

自我们第一次使用发布之后的五个月里,今天,Catching Jit Testes不再是研究原型;它们已经是Meta基础设施的一部分,它们帮助我们的工程师捕捉更多的虫子,负载更小,假阳性的可能性更小。

捕捉吉他试验的优势

大多数基于AI的防止代码中错误的方法使用LLMs和/或代理AI来根据以往的经验来审查代码并检测断层。 他们的工作过程与人类审查者的工作过程相同,只是更快。 捕捉JiTTTestes是一种根本不同的方法(表1):它生成可执行测试,通过变化显示具体的行为差异推出。 虽然它需要更多的计算步骤,但它捕捉到基于LLM的或基于agent的代码审查可能没有的bug类。

我们是如何在Meta 执行捕捉的

JiTTestes是自动生成并被设计为失败的,在生产降落前在代码变化(diffs)中上浮bug. 当它们被应用到像Meta那样大的编码库时,一个挑战就是区分强渔获量(即发现真虫的真实阳性失败)和弱渔获量(即可能是假阳性测试).

归结为一个具体问题:对于每一个拟议的diff,我们如何能自动生成测试,在它们引起严重问题之前找到最严重的虫子,并且以较高的真实阳性率进行测试,而不妨碍我们工程师的速度?

为了解决这一问题,我们开发了两个协同工作流程:

- “深知”工作流程,推断代码更改的意图和风险,并将生成目标定为可能的故障点。

- 一个“dodgy diff”工作流程,将每个代码更改当作变异/出错处理,并生成测试结果,以揭露其行为差异,而不考虑意图。 它含蓄地声称," didgy " (即 " dodgy " )。

为了过滤假阳性,我们采用了一种传统的以规则为基础的方法,加上我们称之为“LLM-as-Judge”的综观法,将几个最先进(SOTA)LLMs的判断汇总起来,所有任务都是将弱渔获量归类为可能的真或假阳性。

我们还继续进行人文审查,着眼于减少审查负荷。 我们的目标是保持人类标签的一致性,但减少工程师被带进审查弱渔获的可能性。

如何运作

整个系统的工作流程分五个阶段进行:

第1阶段:瞄准和触发

该系统在前一天提交的备用能力和目标diff上进行通宵运行,使用类似于diff Risk Score(DRS)的机制,对它进行了以往代码修改方面的培训,认为它们“危险”。 这有助于确保测试生成侧重于最有可能抑制严重回归的diffs.

第2阶段:两个 Diff- Aware 测试-工作流程

dodgy diff工作流程将每个diff当作是变种,并使用以变异导出LLM为基础的测试生成,生成能区分diff行为与母行为的测试。 这里的目标是最大限度地扩大弱渔获量,并由此找到其中的强渔获量。

同时,意向意识工作流程使用LLM通过代码更改,diff标题和摘要推断diff的意图。 LLM随后描述了“风险”——试图实施意图的方式可能产生错误。 然后,它利用这些风险描述来构建变种人——每个变种人代表一个可能为推出的bug,同时实施所推断的意图。

生成测试可以杀死每个变种人(即区分变种行为和父母行为).

然后在实际测试中进行任何失败都作为弱渔获物收获。

第3阶段:LLM-即席法官(自动评估)

一旦产生弱渔获物,系统必须确定每个渔获物是假正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正正

LLM-as-Judge 综艺节目集由LLMs组成,回顾:

- 渔获物测试码

- 测试-执行结果(失败代码、消息、执行跟踪)。

- 父母和子女之间的代码变化(diff)。

- 推断的diff意图。

第4阶段:基于规则的评估员(Rub Fake)

我们以更传统的、基于规则的方法补充LLM-as-judge,称为基于规则的假杀环境(Rub Fake)。

LLM-as-Judge拥有丰富的语义学,但其判决是非决定性的,难以核实。 相形之下,Rub Fake提供了经过核实的,决定性的判断。 Rub Fake和LLM-as-Judge合作,对弱渔获物候选人进行了总体排名,排名足够高的候选人值得进一步审议。

阶段5: " 人与人 " (工程师接触)

根据LLM-as-Judge和Rub Fake的排名,系统随后决定是否接触人类工程师。

与其说是人与人接触的方法,即人类工程师审查每一项产出,我们通过人与人接触的方法减少了摩擦,即人类工程师制定标准

Meta捕捉到JiT试验的影响

随着测试系统的建立,我们的目标是让工程师参与测试结果。

至此,Meta的589名工程师(占我们外联的64%)与Catching Jit Testers进行了接触。 这些工程师报告说"Catching JiT Testers"出现了真正可操作的发现,真实阳性率达到60%.

2026年上半年,Catching JiT Tests在diff阶段抓取了74个严重(SEV)隐私bug(英语:Catching JiTT Tests),在他们登陆生产前发挥了关键作用,并在该时间段内将隐私SEV的总体发生率降低了20%.

为什么它很重要

代理软件开发正在帮助整个行业的工程师和开发者比以往更快地写作,评论和船码。 但更快的部署也意味着需要更快的测试。 每个在生产前被捕获的bug都是终端用户不需要处理的。 LLMs能够提供额外的安全层,能够捕捉传统测试可能错过的东西

捕捉JiTTTests是一种在技术和社会上都具有可扩展性的解决方案。 将这些测试与人与人相通的方法结合起来,有助于确保工程师很少需要读取测试代码,只需要确认所观察到的行为变化是否有意。

这种方法是概括性的:工程师们及早确定成功标准,让AI执行测试,在总体层面监测结果,并在政策层面而不是每个项目上进行干预。

读取纸张

我们的论文《在Meta的时接试验生成》在FSE 2026上发表,并在Product@scale上发表,其中详细介绍了我们在Meta基础设施中与Catching JitTests进行的初步部署和测试。

本文由 AI宝库自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(engineering.fb.com)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI宝库首页 · 提交工具 · 商务合作 · 关于本站 · 597 款 AI 工具分类导航 · 每日 AI 热门项目与动态