Slack 的工程团队最近发布 如何使用大型语言模型 (LLM) 自动转换 15,000 个单元和集成测试酵素React 测试库 (RTL)。通过结合抽象语法树 (AST) 转换和 AI 自动化,Slack 的创新方法实现了 80% 的转换成功率,大大减少了所需的手动工作量,并展示了 AI 在简化复杂开发任务方面的潜力。

这一转变是由酶的 缺乏对 React 18 的支持,需要进行重大转变才能保持与最新 反应 版本。Slack 的转换工具采用率达到约 64%,为开发人员节省了至少 10,000 小时中的 22% 的时间。虽然这个数字代表节省了不少,但 Slack 高级软件工程师 Sergii Gorbachov 推测,实际上这个数字可能要高得多:

值得注意的是,这 22% 的时间节省仅代表测试用例通过的记录案例。但是,可以想象有些测试用例转换正确,但设置或导入语法等问题可能导致测试文件根本无法运行,而这些情况下的时间节省并未被考虑在内。

该团队最初尝试使用以下方法自动完成转换 抽象语法树 (AST)转换,目标是 100% 准确率。然而,Enzyme 方法的复杂性和多样性导致自动转换代码的成功率仅为 45%。导致成功率低的一个因素是,正确的转换取决于渲染结果的上下文信息 文档对象模型 (DOM)被测试,AST 转换无法访问它。

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

接下来,该团队尝试使用 人择法学硕士, 克劳德 2.1. 尽管努力改进提示,但转换成功率差异很大,在 40% 到 60% 之间。Gorbachov 指出,“结果范围从非常有效的转换到令人失望的转换,这在很大程度上取决于任务的复杂性。”

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

随后,Slack 的工程师采用了一种混合方法,将 AST 转换与 LLM 功能相结合,并模仿人类行为。通过将渲染的待测 React 组件和 AST 工具执行的转换作为提示的一部分输入到 LLM,并为 AI 创建强大的控制机制,他们实现了 80% 的转换成功率,证明了这些技术的互补性。

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

Claude 2.1 是 Anthropic 于 2023 年 11 月发布的 LLM 模型。它包含一个 200K 令牌上下文窗口,显著降低了模型幻觉的发生率,并提供了系统提示,允许使用工具。此后,Anthropic 推出了由三个不同模型组成的 Claude 3 系列模型, 多式联运能力并提高了上下文理解能力。

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

1718793624
#Slack #将 #AST #与大型语言模型相结合自动转换 #个单元测试中的
2024-06-19 09:51:55

Leave a Reply

Your email address will not be published. Required fields are marked *