前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Slack 结合 AST 和 LLM 自动转换 15000 个单元测试,成功率达 80%

Slack 结合 AST 和 LLM 自动转换 15000 个单元测试,成功率达 80%

作者头像
深度学习与Python
发布2024-06-27 18:33:22
550
发布2024-06-27 18:33:22
举报
作者 | Eran Stiller

译者 | 明知山

策划 | Tina

Slack 的工程团队最近发表了一篇文章,分享了他们如何使用大型语言模型(LLM)自动将 15000 个单元和集成测试 从 Enzyme 迁移到 React Testing Library (RTL)。通过结合抽象语法树(AST)和 AI 驱动的自动化方法,Slack 实现了 80% 的转换成功率,显著减少了手动工作量,展示了 AI 在简化复杂开发任务方面的潜力。

之所以要进行迁移,是因为 Enzyme 缺乏对 React 18 的支持,需要通过迁移保持与最新 React 版本的兼容性。这个迁移工具在 Slack 的采用率达到了约 64%,至少为开发者节省了 22% 的时间。这个数字已经非常显著,而 Slack 高级软件工程师 Sergii Gorbachov 推测,这个数字实际上可能更大:

需要注意的是,这 22% 的时间节省仅代表了测试用例通过的部分。可以想象,有些测试用例实际上已经被正确转换,但由于设置或导入语法等问题,导致测试无法运行,因此这些情况下的时间节省并未被计算在内。

该团队最初尝试使用抽象语法树(AST)来进行自动化转换,目标是 100% 的准确性。然而,由于 Enzyme 方法的复杂性和多样性,自动转换代码的成功率仅为 45%。影响成功率的一个因素是转换依赖了被测试的渲染 文档对象模型(DOM)的上下文信息,而 AST 转换无法访问这些信息。

wrapper.find('selector');的 AST 表示 ( 来源 )

接下来,该团队尝试使用 Anthropic 的 Claude 2.1 进行转换。尽管他们努力改进提示词,转换成功率在 40% 到 60% 之间波动。Gorbachov 指出,“转换效果在非常有效和令人失望之间徘徊,主要取决于任务的复杂性。”

在得到这些不满意的结果之后,团队决定观察人类开发者如何进行单元测试转换。他们注意到,人类开发者拥有广泛的与 React、Enzyme 和 RTL 相关的知识库,并且他们将这些知识与渲染 React 元素的上下文访问以及转换工具初始版本提供的 AST 转换相结合。

Slack 的工程师随后采用了一种混合方法,结合 AST 转换和 LLM 功能,并模仿人类行为。他们将被测试的 React 组件和由 AST 工具执行的转换作为提示词的一部分输入给 LLM,并为 AI 创建一个强大的控制机制,他们实现了 80% 的转换成功率,展示了这些技术之间的互补性。

修改后的管道流程图 (来源)

Claude 2.1 是 Anthropic 在 2023 年 11 月发布 的模型。它支持 20 万的 token 上下文窗口,显著减少了模型幻觉,并支持工具调用。Anthropic 随后推出了 Claude 3 系列模型,包含了三个不同的模型、多模态功能和改进的上下文理解。

抽象语法树(AST)是用编程语言编写的源代码抽象语法结构的树表示。树的每个节点表示源代码中出现的一个结构。语法树侧重于理解代码功能所必需的结构和内容。AST 通常在编译器和解释器中用于解析和分析代码,从而在编译期间支持各种转换、优化和转译。

查看英文原文

https://www.infoq.com/news/2024/06/slack-automatic-test-conversion/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
迁移服务平台
迁移服务平台(Migration Service Platform,MSP)是帮助客户将系统从源平台迁移到腾讯云的工具。为迁移上云项目提供源端资源调研、上云规划、目标资源创建、批量迁移实施等能力,帮助降低客户迁移上云的复杂度,提升迁移效率。迁移服务平台 MSP 不收取任何额外费用,您只需为购买的资源及 DTS 数据迁移工具付费。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档