6 puan yazan GN⁺ 2025-04-18 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Airbnb, yaklaşık 3.500 Enzyme tabanlı test dosyasını React Testing Library (RTL)'ye otomatik olarak migrate etmeyi başardı
  • Başta 1,5 yıl süreceği öngörülen işi LLM ve otomasyon pipeline'ı ile yalnızca 6 haftada 3,5K test dosyasını güncelleyerek tamamladı
  • Otomatik doğrulama, retry döngüleri, dinamik prompt'lar ve büyük ölçekli context kurgusuyla yüksek otomasyon başarı oranı sağlandı
  • Sonuçta tüm dosyaların %97'si otomatik dönüştürüldü, kalanlar manuel son rötuşlarla %100 tamamlandı
  • Bu deneyim temel alınarak daha karmaşık migrasyon işleri ve LLM tabanlı geliştirme araçlarını genişletme planları yapılıyor

Airbnb'nin LLM tabanlı büyük ölçekli test migrasyonu

Arka plan

  • Airbnb, 2020'den beri yeni testlerde React Testing Library (RTL) kullanarak Enzyme'dan geçişi başlattı
  • Enzyme'ın iç implementasyona derinlemesine erişen yaklaşımı, modern React felsefesiyle uyuşmadığı için kademeli olarak kaldırılması gerekliliği ortaya çıktı
  • Basitçe kaldırmak, test coverage boşluklarına yol açacağından, niyeti ve coverage'ı koruyarak dönüşüm yapılması gerekiyordu

Migrasyon stratejisi

1. Aşama tabanlı doğrulama ve refactoring

  • Dosyalar, her aşamadaki doğrulamayı geçtiğinde bir sonraki aşamaya ilerleyen durum tabanlı bir pipeline olarak kurgulandı
  • Başarısızlık durumunda düzeltme denemesi için LLM çağrıldı; aşamalar örneğin enzyme kaldırma → jest düzeltmeleri → lint/tsc geçişi → tamamlandı olarak işaretleme şeklindeydi
  • Yüzlerce dosya paralel işlenebildi; basit dosyalar hızlıca tamamlanırken, karmaşık dosyalar kademeli olarak çözüldü

2. Retry döngüleri ve dinamik prompt'lar

  • Başarısız olan aşamalar maksimum deneme sayısına kadar tekrar çalıştırıldı
  • Her denemede, hata mesajları ve düzeltilmiş dosya prompt'a eklenerek LLM'e geri bildirim verildi
  • Basit ile orta zorluktaki dosyaların büyük kısmı 10 denemeden az sürede başarıya ulaştı

3. Prompt context'ini genişletme

  • Karmaşık dosyalar basit retry ile çözülemediğinden, zengin context sağlama yaklaşımına geçildi
  • En fazla 100 bin token'a kadar yapılandırıldı; dahil edilen öğeler:
    • İlgili component'in source code'u
    • Mevcut Enzyme testleri
    • Yakındaki testler ve örnekler (few-shot prompting)
    • Ekip içi stil ve ortak pattern'ler
  • Buradaki kritik nokta, iyi ve ilgili dosyaları seçmekti; prompt cümlelerinin kendisinden çok, "içine ne koyduğunuz" daha önemliydi

4. %75'ten %97'ye çıkarmak: sistematik iyileştirme

  • Otomasyonla %75 dönüşümden sonra, kalan %25 içinde 900 dosya başarısız durumda kaldı
  • Sorun analizi ve iyileştirme döngüsü tekrarlandı:
    1. Başarısız dosyalardaki ortak sorunları toplama
    2. Temsili örnekleri seçme (5~10 adet)
    3. Prompt/script iyileştirmeleri
    4. Örnekler üzerinde test uygulayıp ardından tamamını yeniden deneme
  • 4 gün süren yinelemeli çalışmayla otomasyon tamamlama oranı %97'ye ulaştı

Kalan %3 manuel işlendi

  • 100'den fazla retry'a rağmen başarısız olan bazı dosyalar, otomatik refactoring çıktısı temel alınarak manuel olarak düzeltildi
  • Bu da otomasyon sayesinde minimum çabayla nihai olarak tamamlandı

Sonuçlar ve etki

  • Otomasyonun ilk çalıştırılmasında 4 saat içinde migrasyonun %75'i tamamlandı
  • 4 günlük yinelemeli iyileştirmeyle %97 otomasyon tamamlandı
  • Kalan manuel işlemler dahil toplam 6 hafta içinde geçiş çalışması %100 tamamlandı
  • Test niyeti ve coverage korunurken Enzyme tamamen kaldırıldı
  • LLM API maliyeti ve mühendislik kaynakları dahil edildiğinde bile manuel çalışmaya kıyasla son derece verimli bir yaklaşım olduğu görüldü

Sonraki adımlar

  • Bu deneyime dayanarak LLM ile daha büyük ölçekli kod dönüşümü otomasyonuna başlanıyor
  • Karmaşık refactoring, yapısal değişiklikler gibi alanlarda da uygulanabilirliği araştırılıyor

Henüz yorum yok.

Henüz yorum yok.