# TDD vs BDD

Adres: https://softwaredictionary.org/tr/karsilastirma/tdd-vs-bdd
Son güncelleme: 2026-09-30

Kısaca: TDD'de geliştirici testi geçirecek koddan önce başarısız bir test yazar; BDD ise bunun üzerine kurulup davranışı ekibin okuyabileceği sade senaryolarla anlatır.

## TDD ile BDD arasındaki fark nedir?

Test güdümlü geliştirme (TDD), kırmızı, yeşil, yeniden düzenle (red, green, refactor) denen kısa bir döngüye dayanan bir kodlama pratiğidir: küçük bir başarısız test yaz, onu geçirecek kadar kod yaz, sonra temizle. Davranış güdümlü geliştirme (BDD) TDD'den doğmuştur ve sistemin bir kullanıcının bakış açısından nasıl davranması gerektiğine odaklanır; çoğunlukla Given-When-Then (Verilen-Olduğunda-O zaman) senaryoları olarak yazılır.

Fark, hedef kitlede ve düzeydedir. TDD, kodun tasarımını bir programlama dilinde yazılan birim testleriyle şekillendiren, esasen bir geliştirici aracıdır. BDD ise bir iş birliği pratiğidir: geliştiriciler, test uzmanları ve ürün sahipleri davranışın somut örnekleri üzerinde sade dille anlaşır ve bu senaryolar otomatik kabul testlerine dönüşür.

İkisi birbirine iyi uyar. Bir ekip, bir özelliğin ne yapması gerektiğini tanımlamak için BDD senaryoları yazabilir, sonra bu senaryoları geçirecek parçaları kod düzeyinde kurmak için TDD kullanabilir. Gherkin söz dizimini kullanan BDD araçları, sade dille yazılmış her adımı bir test kodu parçasına bağlar.

Sık yapılan bir yanlış, BDD'nin belirli bir aracı kullanmak ya da testleri `describe` ve `it` ile yazmak anlamına geldiği düşüncesidir. BDD'nin özü, kodlama başlamadan önce ortak örnekler üreten konuşmadır; o olmadan Given-When-Then dosyaları yalnızca daha uzun yazılmış testlerdir.

| Özellik | Test Odaklı Geliştirme | Davranış Odaklı Geliştirme |
| --- | --- | --- |
| Odak | Doğru ve iyi tasarlanmış kod birimleri | Kullanıcıların ve işin beklediği davranış |
| Kim yazar | Geliştiriciler | Geliştiriciler, test uzmanları ve ürün sahipleri birlikte |
| Biçim | Projenin programlama dilinde test kodu | Sade dille Given-When-Then senaryoları |
| Tipik düzey | Birim testleri | Kabul ve özellik düzeyinde testler |
| Başlangıç noktası | Yazılacak sonraki kod parçası için küçük bir başarısız test | İstenen davranışın örnekleri üzerine bir konuşma |
| Ana fayda | Geliştiriciler için daha iyi tasarım ve hızlı geri bildirim | Ekip genelinde gereksinimlerin ortak anlaşılması |

## Test Odaklı Geliştirme şu durumlarda doğru seçim

- Kod düzeyinde sıkı geri bildirim ve daha iyi tasarım istiyorsunuz.
- Gereksinimler, bir kütüphane ya da algoritma gibi teknik.
- Testleri esas olarak geliştiricilerin okuması gerekiyor.

## Davranış Odaklı Geliştirme şu durumlarda doğru seçim

- Geliştirici olmayanların da beklenen davranışı okuyup üzerinde anlaşması gerekiyor.
- Gereksinimler iş ile mühendislik arasında sık yanlış anlaşılıyor.
- Özelliklerin nasıl davranması gerektiğine dair yaşayan bir dokümantasyon istiyorsunuz.

## Sık sorulan sorular

**BDD, TDD'den daha mı iyi?**

Farklı sorunları çözerler. TDD kod tasarımını iyileştirir ve geliştiricilere hızlı geri bildirim verir; BDD ise gereksinimlerin ortak anlaşılmasını iyileştirir. Birçok ekip ikisini de kullanır.

**TDD olmadan BDD yapılabilir mi?**

Evet. Önce birim testleri yazmadan da davranış senaryoları yazıp otomatikleştirebilirsiniz; yine de ikisini birleştirmek hem özellik hem kod düzeyinde kapsam sağlar.

**Given-When-Then ne demek?**

Davranışı tarif etmek için bir şablondur: Given başlangıç durumunu kurar, When eylemi tarif eder, Then de beklenen sonucu belirtir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
