- Airbnb berhasil memigrasikan secara otomatis sekitar 3.500 file pengujian berbasis Enzyme ke React Testing Library (RTL)
- Pekerjaan yang semula diperkirakan memakan waktu 1,5 tahun berhasil diselesaikan dengan LLM dan pipeline otomatisasi hanya dalam 6 minggu untuk memperbarui 3,5K file pengujian
- Tingkat keberhasilan otomatisasi yang tinggi dicapai melalui validasi otomatis, loop retry, prompt dinamis, dan penyusunan konteks berskala besar
- Pada akhirnya, 97% dari seluruh file dikonversi secara otomatis, dan sisanya diselesaikan secara manual hingga mencapai 100%
- Berdasarkan pengalaman ini, mereka berencana memperluas ke pekerjaan migrasi yang lebih kompleks dan alat pengembangan berbasis LLM
Migrasi pengujian skala besar berbasis LLM di Airbnb
Latar belakang
- Sejak 2020, Airbnb menggunakan React Testing Library (RTL) untuk pengujian baru dan memulai transisi dari Enzyme
- Karena Enzyme mengandalkan akses mendalam ke implementasi internal, pendekatan ini tidak lagi selaras dengan filosofi React modern, sehingga muncul kebutuhan untuk menghapusnya secara bertahap
- Penghapusan secara sederhana akan menimbulkan celah dalam cakupan pengujian, sehingga dibutuhkan konversi yang tetap menjaga maksud dan cakupan pengujian
Strategi migrasi
1. Validasi berbasis tahapan dan refactoring
- File disusun dalam pipeline berbasis status, dan hanya berpindah ke tahap berikutnya jika lolos validasi pada setiap tahap
- Saat gagal, LLM dipanggil untuk mencoba memperbaiki; contohnya tahapan:
hapus enzyme → perbaiki jest → lolos lint/tsc → tandai selesai
- Ratusan file dapat diproses secara paralel; file sederhana selesai cepat, sementara file kompleks diselesaikan secara bertahap
2. Loop retry dan prompt dinamis
- Tahap yang gagal akan diulang hingga jumlah percobaan maksimum
- Pada setiap percobaan, pesan error dan file yang telah dimodifikasi dimasukkan ke dalam prompt untuk memberi umpan balik ke LLM
- Sebagian besar file dengan tingkat kesulitan sederhana hingga menengah berhasil diselesaikan dalam 10 percobaan atau kurang
3. Perluasan konteks prompt
- File kompleks tidak dapat diselesaikan hanya dengan retry sederhana, sehingga pendekatannya diubah menjadi memberikan konteks yang lebih kaya
- Konteks disusun hingga maksimum 100 ribu token, mencakup:
- Kode sumber komponen terkait
- Pengujian Enzyme yang sudah ada
- Pengujian di sekitar dan contoh referensi (few-shot prompting)
- Gaya internal tim dan pola umum
- Kuncinya adalah memilih file relevan yang berkualitas; dibandingkan kalimat prompt itu sendiri, “apa yang dimasukkan” jauh lebih penting
4. Mendorong hasil dari 75% ke 97%: perbaikan sistematis
- Setelah otomatisasi mencapai 75%, dari 25% sisanya 900 file berada dalam status gagal
- Analisis masalah dan perbaikan diulang melalui langkah berikut:
- Mengumpulkan isu umum dari file yang gagal
- Memilih sampel perwakilan (5~10 file)
- Memperbaiki prompt/skrip
- Menerapkan pengujian pada sampel lalu mencoba ulang ke seluruh file
- Pengulangan selama 4 hari berhasil mendorong tingkat otomatisasi hingga 97%
3% yang tersisa ditangani secara manual
- Beberapa file yang tetap gagal bahkan setelah lebih dari 100 kali percobaan ulang diperbaiki secara manual berdasarkan hasil refactoring otomatis
- Berkat otomatisasi, bagian ini pun dapat diselesaikan dengan upaya minimal
Hasil dan dampak
- Pada eksekusi otomatisasi pertama, 75% migrasi selesai hanya dalam 4 jam
- Setelah 4 hari perbaikan berulang, 97% otomatisasi berhasil diselesaikan
- Dengan memasukkan sisa pekerjaan manual, seluruh transisi selesai 100% dalam 6 minggu
- Enzyme berhasil dihapus sepenuhnya sambil tetap menjaga maksud dan cakupan pengujian
- Bahkan dengan biaya API LLM dan sumber daya engineering, pendekatan ini jauh lebih efisien dibanding kerja manual
Langkah berikutnya
- Berdasarkan pengalaman ini, mereka mulai mengotomatisasi transformasi kode skala lebih besar dengan memanfaatkan LLM
- Kemungkinan penerapan juga sedang dieksplorasi untuk refactoring kompleks, perubahan struktur, dan lain-lain
Belum ada komentar.