Projeler

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.

C#RoslynVSIXVisual Studio SDKLLMxUnit

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:

  1. Servis dosyası
  2. O servisin içindeki public operasyon
  3. 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.

0

Yorumlar

İlk yorumu siz yapın

Düşüncelerinizi Paylaşın

Henüz yorum yapılmamış. İlk yorumu yukarıdaki formdan siz yapın!
ME

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ı →