Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Birim testi yazmaya başlamak: neyi, nasıl test etmeli?

kaan.yildiz Mid 8 saat önce · 1 görüntülenme

Test yazmak çoğu zaman "sonra yaparım" listesinde kalır. Oysa küçük ve doğru seçilmiş birkaç test, hatayı canlıya çıkmadan yakalar ve kodu değiştirirken içini rahatlatır.

Birim testi nedir?

Birim testi, kodun küçük bir parçasını (genelde tek bir fonksiyon veya sınıf) dış dünyadan bağımsız olarak dener. Veritabanına, ağa veya dosya sistemine gitmez; bu yüzden hızlı çalışır.

İyi bir testin yapısı: AAA

def test_indirim_yuzde_onu_uygular():
    # Arrange: hazırlık
    sepet = Sepet(toplam=200)

    # Act: çalıştır
    sonuc = sepet.indirim_uygula(yuzde=10)

    # Assert: kontrol et
    assert sonuc == 180

Her test tek bir davranışı kontrol etmeli ve adı neyi beklediğini söylemeli.

Önce neyi test etmeli?

  1. İş kuralları: Fiyat hesaplama, yetki kontrolü, tarih aralıkları gibi hatası pahalıya patlayan yerler.
  2. Sınır değerleri: 0, boş liste, negatif sayı, en büyük değer, ay sonu, artık yıl.
  3. Daha önce hata çıkan yerler: Her düzeltilen hata için bir test yazarsan aynı hata geri gelmez.

Basit getter/setter'ları veya kullandığın kütüphanenin kendisini test etmene gerek yok.

Bağımlılıkları ayırmak

Fonksiyon doğrudan veritabanına veya saate bağlıysa test etmek zorlaşır. Bağımlılığı dışarıdan vermek işleri kolaylaştırır:

def gecikme_var_mi(teslim_tarihi, bugun):
    return bugun > teslim_tarihi

datetime.now() fonksiyonun içinde çağrılsaydı her gün farklı sonuç verebilirdi. Dışarıdan aldığında test her zaman aynı sonucu verir.

Dillere göre yaygın araçlar

  • Python: pytest
  • JavaScript/TypeScript: Vitest, Jest
  • PHP: PHPUnit
  • Java: JUnit
  • C#: xUnit, NUnit

Sık yapılan hatalar

  • Bir testte çok fazla şeyi aynı anda kontrol etmek. Test kırıldığında sebebi bulmak zorlaşır.
  • Testlerin birbirine bağımlı olması (sıra değişince kırılan testler).
  • Kapsama oranını (coverage) hedef yapmak. Yüzde 100 kapsama, doğru şeyin test edildiği anlamına gelmez.

Başlamak için en iyi yer: bir sonraki hata düzeltmende önce hatayı gösteren testi yaz, sonra düzelt.

0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik8 saat önce
  • Cevap0
  • Görüntülenme1
  • Beğeni0
Yeni konu aç