TDD Nedir?
İngilizce: TDD (Test-Driven Development)
TDD, önce başarısız testi yazıp ardından testi geçirecek en küçük kodu ekleyerek tasarımı adım adım şekillendirme pratiğidir.
TDD Nedir?
TDD (Test-Driven Development), kodu testlerden sonra doğrulamak yerine testlerle birlikte tasarlama yaklaşımıdır. Geliştirici önce beklenen davranışı gösteren küçük bir test yazar, testin başarısız olduğunu görür ve yalnızca bu testi geçirecek kadar kod ekler.
Red, Green, Refactor Döngüsü
TDD’nin pratik döngüsü üç adımdan oluşur:
- Red: Henüz yazılmamış davranış için başarısız bir test eklenir.
- Green: Testi geçirecek en sade uygulama yazılır.
- Refactor: Davranış korunurken kodun isimleri, sınırları ve tekrarları iyileştirilir.
Bu döngü, özellikle iş kuralları net olan servislerde ve hesaplama mantığında tasarım geri bildirimi sağlar. Test yazmak zorlaştığında çoğu zaman fonksiyonun fazla sorumluluk aldığı veya bağımlılıkların iyi ayrılmadığı anlaşılır.
Nerede Kullanılır?
TDD en sık unit test seviyesinde uygulanır; fakat entegrasyon testleriyle de desteklenebilir. BDD ise aynı test disiplinini daha çok kullanıcı davranışı ve kabul kriterleri diliyle ele alır.
Finans hesaplamaları, fiyat kuralları, stok rezervasyonu veya API validasyonu gibi hata maliyeti yüksek alanlarda TDD değişikliklerin yan etkisini erken gösterir. Arayüz prototipleri veya sık değişen keşif işleri için ise daha esnek test stratejisi tercih edilebilir.
İlgili Terimler
BDD, beklenen davranışı Given-When-Then senaryolarıyla tarif ederek iş ve teknik ekipler arasında ortak dil kurar.
Test KapsamıTest kapsamı, otomatik testlerin kodun hangi satır, dal veya fonksiyonlarını çalıştırdığını gösteren kalite metriğidir.
JestJest, JavaScript ve TypeScript için Facebook tarafından geliştirilen, kolay kullanımıyla popüler olan test çerçevesidir.
Sola Kaydırılmış TestSola kaydırılmış test, gereksinim, tasarım ve kodlama aşamasında otomatik kontrolleri başlatıp hataları üretim öncesi yakalama yaklaşımıdır.
Unit TestUnit test, fonksiyon veya sınıf gibi küçük bir kod birimini dış bağımlılıklardan izole ederek hızlı ve otomatik doğrulayan testtir.