Unit Test Generator (VakıfBank)
Visual Studio 2022+ için geliştirdiğim VSIX eklentisi. Seçilen servis operasyonunu Roslyn ile budayıp kurum içinde barındırılan LLM'e veriyor; testi yazıyor, çalıştırıyor, fail olursa geçene kadar yeniden yazıyor. Geliştirici müdahalesi olmadan %95+ coverage, ortalama 45 saniye ile 1 dakika.
Hangi Sorunu Çözüyor?
Mevcut bir servise sonradan birim test yazmanın zor tarafı testin kendisi değil; testin ihtiyaç duyduğu bağlamı toplamaktır. Public operasyon, çağırdığı private metotlar, bağımlılıklar, entity'ler, DTO'lar... Bunları elle toplamak her metot için tekrarlanan, sıkıcı bir iş.
Unit Test Generator, VakıfBank'ta bu işi uçtan uca devralmak için geliştirdiğim bir Visual Studio eklentisi (VSIX). Visual Studio 2022 ve üzerinde çalışıyor, kurum içinde barındırılan bir LLM ile haberleşiyor. Private metotlar, entity'ler ve DTO'larla birlikte bağlam büyüdüğü için kurumdaki bağlam penceresi en geniş modeli kullanıyor.
Bu eklentinin açık kaynak kardeşi VS2026 Unit Test Generator. İkisi aynı Roslyn yaklaşımını paylaşıyor; fark, açık sürümün bağlamı Copilot Chat'e devretmesi, kurum içi sürümün ise testi kendi yazıp çalıştırması ve geçene kadar düzeltmesi.
Nasıl Çalışıyor?
1. Üç seçim
Açılan pencerede sırayla seçiyorsunuz:
- Servis dosyası
- O servisin içindeki public operasyon
- Testin yazılacağı test servis dosyası
Gerisi eklentide.
2. Roslyn ile bağlam kırpma
Eklenti kodu olduğu gibi modele göndermiyor. Roslyn ile yalnızca gerekli kısımları kırpıyor: yorum satırları siliniyor, bağlam daraltılıyor. Seçilen operasyonun gidebildiği her yer taranıyor: tüm private metotlar, entity metotları ve DTO'lar. Tarama, hedeflenen %90 coverage oranının üzerine çıkacak kapsam elde edilene kadar sürüyor.
3. Yaz, çalıştır, düzelt
Model testi yazıyor; eklenti testi hemen çalıştırıyor. Test fail olursa hata çıktısı modele geri veriliyor ve test success olana kadar yeniden yazılıyor. Döngü kapalı: arada bir geliştiricinin bakması gerekmiyor.
Servis + operasyon + test dosyası seçimi
└─ Roslyn: kırpılmış bağlam (private metotlar, entity'ler, DTO'lar)
└─ Kurum içi LLM: test üretimi
└─ Testi çalıştır
├─ success → bitti
└─ fail → hata çıktısıyla yeniden üret
Sonuç
Çok uzun ve dallanmış metotlarda bile %95 ve üzeri coverage; bir operasyon için ortalama süre 45 saniye ile 1 dakika arası. Geliştirici yalnızca üç seçim yapıyor, çıkan testi gözden geçiriyor.
Muhammed Emin Özdemir
VakıfBank'ta senior full-stack geliştirici. Kurumsal sistemler, temiz kod ve LLM tabanlı araçlar üzerine odaklanıyor.
Hakkımda daha fazlası →
Yorumlar
İlk yorumu siz yapın