6 poin oleh GN⁺ 2025-04-18 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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:
    1. Mengumpulkan isu umum dari file yang gagal
    2. Memilih sampel perwakilan (5~10 file)
    3. Memperbaiki prompt/skrip
    4. 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.

Belum ada komentar.