旅行与住宿 / 住宿中介
Airbnb:迁移陈旧的界面测试代码
- 企业
- Airbnb
- 国家
- 美国
- 实施阶段
- 运营中
- 资料发布
- 日期依据
- 资料发布的时间,可能与启用日期不同。
- 依据核验方式
- 阅读原文正文
业务问题
Airbnb的React组件测试是用Enzyme编写的。Enzyme是为旧版React设计的工具,其深入组件内部的方式已经不符合当下的测试惯例。两种工具结构根本不同,无法直接替换。分析显示,如果删除Enzyme文件,代码覆盖率会出现很大缺口。
使用的技术与数据
Airbnb在2024年构建了基于LLM的迁移pipeline,把每个文件当作state machine来处理。文件必须依次通过Enzyme重构、Jest修复、lint与tsc修复的检查,才能进入下一阶段。检查不通过时,就把错误内容和最新版本的文件放进prompt重试。对复杂文件则扩大context。prompt从40,000个token增加到100,000个token,最多引入50个相关文件,包括目标组件的源码、待迁移的测试文件、检查失败的信息以及同目录下的同级测试。人负责挑出失败案例并修改prompt和脚本,对始终无法自动完成的文件则手工修复。
成果
首次批量运行在四小时内迁移了75%的目标文件。随后的四天里对prompt和脚本做了打磨,比例提高到97%。剩下的3%由人又花了一周完成。整体上约3,500个Enzyme测试文件在六周内完成迁移。Airbnb表示,如果手工进行,这项工作原本估计需要1.5年的工程时间。公司称原有测试意图和代码覆盖率都得到了保留。
局限与待解问题
手工需要1.5年的说法是Airbnb的事前估算,而非实际的对照实验。原文没有迁移后测试运行时间或缺陷发现率的变化。
来源
- accelerating large scale test migration with llmsmedium.com, 查阅
本案例根据公开资料整理,并非 ATF Works 客户的成果。