旅行と宿泊 / 宿泊仲介

Airbnb:古い画面テストコードの移行

企業
Airbnb
国
米国
導入状況
運用中
資料公開
日付の基準
資料が公開された時点。導入を開始した日とは異なる場合がある。
根拠の確認方法
原文の本文を閲覧

業務課題

AirbnbのReactコンポーネントテストはEnzymeで書かれていた。Enzymeは古いReactのバージョンに合わせて作られた道具で、コンポーネントの内部に深く触れる方式が今のテスト慣行と合わなくなっていた。二つの道具は構造が根本的に違うため、そのまま差し替えることはできなかった。Enzymeのファイルを消すとコードカバレッジに大きな穴が空くという分析が出ていた。

使った技術とデータ

Airbnbは2024年にLLMを基にした移行pipelineを作った。ファイル一つをstate machineのように扱った。Enzymeのリファクタ、Jestの修正、lintとtscの修正の順で検査を通らないと次の段階に進めない。検査に引っかかると、エラーの内容と最新のファイルをプロンプトに入れてもう一度試す。複雑なファイルではcontextを広げた。プロンプトは40,000から100,000トークンまで増え、関連ファイルを最大50個まで引き込んだ。対象コンポーネントのソース、移すテストファイル、検査の失敗内容、同じディレクトリの兄弟テストを一緒に入れた。人は失敗事例を選んでプロンプトとスクリプトを直す役割を担い、最後まで自動化できなかったファイルは自分で直した。

成果

最初の大量実行では、対象ファイルの75%を4時間で移した。その後の4日間でプロンプトとスクリプトを整え、97%まで上げた。残りの3%は人がさらに一週間かけて仕上げた。全体では約3,500個のEnzymeテストファイルを6週間で移した。Airbnbは、手作業なら1.5年分のエンジニアリング時間がかかると見ていた作業だと述べた。もとのテストの意図とコードカバレッジは保ったとした。

限界と残る課題

手作業なら1.5年という数値は、実際の比較実験ではなくAirbnbの事前の見積もりである。移行後のテスト実行時間や欠陥の発見率の変化は原文にない。

出典

公開資料をまとめた事例です。ATF Works導入企業の成果ではありません。

原文を読む (新しいタブで開きます)