dev-tools
Sözlük ↗Birim Test (Unit Test)
Bir birim test, tek ve küçük bir kod biriminin — tipik olarak tek bir fonksiyon veya metodun — sistemin geri kalanından bağımsız olarak izole şekilde doğru davrandığını doğrulayan otomatik bir testtir (veritabanı veya ağ çağrısı gibi harici bağımlılıklar genellikle bir "mock" veya "stub" ile değiştirilir, böylece test hızlı ve deterministik olur). Birim testler "test piramidinin" tabanında yer alır: çoğu hatayı yakalayan çok sayıda hızlı, ucuz birim test; bileşenlerin birlikte çalıştığını doğrulayan daha az entegrasyon testi ve tüm sistemin bir kullanıcı perspektifinden çalıştığını doğrulayan daha da az yavaş uçtan uca test. Framework'ler arasında Jest ve Vitest (JavaScript), pytest (Python), JUnit (Java) ve Go'nun yerleşik `testing` paketi bulunur. AI/SaaS geliştiricileri için neden önemli: birim testler, hızlı ve güvenli iterasyonu mümkün kılan şeydir — iyi test edilmiş bir kod tabanı, bir geliştiricinin (veya bir AI kodlama ajanının) bir değişiklik yapıp saniyeler içinde bir şeyi bozup bozmadığını bilmesini sağlar; uygulama içinde elle tıklayarak kontrol etmek yerine. Aynı zamanda AI tarafından üretilen kod için en büyük pratik güvenlik ağıdır: bir ajan makul görünen bir uygulama üretebilir, ancak bir test paketi bunu gerçek beklenen davranışa karşı nesnel olarak doğrular; bir insanın diff'i göz gezdirirken kaçırabileceği halüsinasyon kaynaklı uç durum işleme veya ince şekilde yanlış mantığı yakalar. Nasıl çalışır: bir birim test bilinen bir girdi hazırlar, test edilen fonksiyonu çağırır ve çıktının beklenen bir değerle eşleştiğini doğrular — "Hazırla, Uygula, Doğrula" (Arrange, Act, Assert) yapısını takip ederek. Bir test paketi `npm test`, `pytest` vb. aracılığıyla yerel olarak saniyeler içinde ve her push'ta CI'da tekrar otomatik olarak çalışır; başarısızlık durumunda bir stack trace ile birlikte test başına net bir geçti/kaldı raporu verir. Uygulamalı örnek: bir geliştirici `calculateShippingCost(weightKg, destination)` fonksiyonunu yazıyor. İlgili birim test dosyası birkaç durum içeriyor: `expect(calculateShippingCost(2, "domestic")).toBe(5.99)`, `expect(calculateShippingCost(2, "international")).toBe(24.99)` ve bir uç durum `expect(() => calculateShippingCost(-1, "domestic")).toThrow("Weight must be positive")`. Test paketini çalıştırmak üçünü de milisaniyeler içinde yürütür; sonraki bir refactor yanlışlıkla uluslararası fiyatlandırma mantığını bozarsa, ikinci doğrulama hemen net bir mesajla başarısız olur ("expected 24.99, received 19.99"), değişiklik hiç birleştirilmeden veya deploy edilmeden tam olarak neyin bozulduğunu tam olarak işaret eder. Tüm paket bir saniyenin çok altında çalıştığından, geliştirici dosyayı kaydettikten neredeyse anında bu geri bildirimi alır; regresyonu saatler veya günler sonra şaşkın bir müşterinin hata raporundan öğrenmek yerine. Bu sıkı döngü — kod yaz, neredeyse anında geçti/kaldı geri bildirimi al — birim testleri özellikle AI kodlama ajanları için bu kadar değerli kılan şeydir: bir ajan, değişiklik ürettikten sonra aynı test paketini çalıştırabilir ve bir test başarısız olduğu anda kendi araç kullanım döngüsü içinde kendini düzeltebilir; bir insanın regresyonu fark edip bildirmesine gerek kalmadan.
İlgili terimler