# Test Odaklı Geliştirme

Adres: https://softwaredictionary.org/tr/terimler/test-driven-development
Kategori: Test ve Kalite
Son güncelleme: 2026-09-30
İngilizcesi: Test-Driven Development
Türkçe karşılığı: test güdümlü geliştirme
Okunuşu: test drivın divelıpmınt

Kısaca: Test odaklı geliştirme, önce başarısız bir test yazdığınız, sonra onu geçirecek kadar kod yazıp ardından tasarımı temizlediğiniz bir kodlama pratiğidir.

## Test odaklı geliştirme nedir?

Test odaklı geliştirme ya da TDD, testin koddan önce geldiği bir yazılım geliştirme yöntemidir. İstediğiniz bir sonraki küçük davranışı otomatik bir test olarak tanımlar, testin başarısız olmasını izler ve ancak ondan sonra testi geçirecek üretim kodunu yazarsınız. Bu pratik, 2000'lerin başında Extreme Programming'in bir parçası olarak Kent Beck tarafından yaygınlaştırılmıştır.

TDD, kırmızı, yeşil, yeniden düzenleme (red, green, refactor) adı verilen kısa bir döngüyü izler. Kırmızı adımda henüz var olmayan özellik yüzünden başarısız olan bir test yazarsınız; yeşil adımda onu geçirecek en basit kodu yazarsınız. Yeniden düzenleme adımında ise testler davranışın değişmediğini doğrularken kodun yapısını iyileştirirsiniz; her döngü saatler değil dakikalar sürer.

Yarışa başlamadan önce bitiş çizgisini işaretlemeye benzer: işin ne zaman bittiğini tam olarak bilirsiniz. TDD; iş mantığı, kütüphaneler ve hata düzeltmeleri için yaygındır; hata düzeltmelerinde önce hatayı yeniden üreten başarısız bir test yazılır. Bu yöntem ayrıca daha küçük ve gevşek bağlı fonksiyonlar üretme eğilimindedir, çünkü test etmesi zor bir kodu bu şekilde yazmak zahmetlidir.

TDD, yalnızca teste sahip olmakla aynı şey değildir. Testleri koddan sonra yazmak da değerlidir; ancak TDD testleri özellikle tasarım kararlarına yön vermek için kullanır. Ayrıca, testleri teknik olmayan kişilerin de okuyabileceği sade dilli senaryolar olarak ifade eden davranış odaklı geliştirme (BDD) ile ilişkilidir, ama ondan farklıdır.

## Önemli noktalar

- Testi geçirecek kodu yazmadan önce başarısız bir test yazın.
- Döngü kırmızı (başarısız), yeşil (geçen), yeniden düzenleme (temizlik) şeklindedir.
- Her döngü küçük ve hızlıdır, çoğu zaman yalnızca birkaç dakika sürer.
- TDD tasarımı şekillendirir ve geride bir regresyon testleri takımı bırakır.

## Örnek: Bir kırmızı, yeşil, yeniden düzenleme döngüsü

```python
# 1. Red: write the test first. It fails because slugify doesn't exist yet.
def test_slugify_replaces_spaces_with_hyphens():
    assert slugify("Hello World") == "hello-world"

# 2. Green: write the simplest code that makes the test pass.
def slugify(text):
    return text.lower().replace(" ", "-")

# 3. Refactor: improve names or structure while the test stays green.
```

## Sık sorulan sorular

**TDD ne anlama gelir?**

TDD, test-driven development (test odaklı geliştirme) ifadesinin kısaltmasıdır; kontrol ettiği koddan önce otomatik bir test yazıp ardından testi geçirecek kodu yazdığınız bir pratiktir.

**TDD geliştirmeyi yavaşlatır mı?**

Testleri baştan yazdığınız için başlangıçta daha yavaş hissettirebilir. Pek çok ekip, hataları erken yakaladığı, yeniden düzenlemeyi güvenli kıldığı ve hata ayıklamaya harcanan zamanı azalttığı için genel olarak zaman kazandırdığını görür.

**TDD ile BDD arasındaki fark nedir?**

TDD, geliştiricilerin kodun tasarımına yön veren küçük testler yazmasına odaklanır. Davranış odaklı geliştirme (BDD) ise TDD'nin üzerine kurulur ve davranışı, iş paydaşlarının da okuyabileceği sade dilli given, when, then senaryolarıyla tanımlar.

---

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