# Test Case (Test Senaryosu)

Adres: https://softwaredictionary.org/tr/terimler/test-case
Kategori: Test ve Kalite
Son güncelleme: 2026-10-03
Türkçe karşılığı: test durumu
Okunuşu: test keys

Kısaca: Test case, belirli bir davranışın kontrolüdür: başlangıç koşulları, girdi ya da adımlar ve yazılımın doğru davranıp davranmadığını gösteren beklenen sonuç.

## Test case nedir?

İyi bir test case, herkesin ya da herhangi bir makinenin onu çalıştırıp sonuçta anlaşabileceği kadar kesindir. Bir giriş formu için şöyle olabilir: kayıtlı bir kullanıcı verildiğinde, doğru e-postayı ve yanlış bir parolayı girdiğinde, bir hata mesajı görünür ve kullanıcı çıkış yapmış durumda kalır. Elle yürütülen test case'ler çoğu zaman bir test yönetim aracında bir kimlik, ön koşullar, adımlar ve beklenen sonuçlarla yazılır.

Otomatik testlerde her test fonksiyonu bir test case'tir; birbiriyle ilgili olanlar da bir test takımında (test suite) toplanır. Arrange, Act, Assert (hazırla, uygula, doğrula) kalıbı onları okunur tutar: veriyi hazırla, tek bir eylem yap, sonra sonucu kontrol et. Her case tek bir şeyi test etmeli ve onu açıklayan bir adı olmalıdır, `rejects_expired_coupon` gibi; böylece bir başarısızlık neyin bozulduğunu hemen söyler.

Case'leri iyi seçmek çok sayıda yazmaktan daha önemlidir. Normal yolu, geçersiz girdiyi, boş ve çok büyük değerleri ve bir yaş kontrolü için tam olarak 18 yaş gibi davranışın değiştiği sınırları kapsayın. Hatalar bu uçlarda toplanır; sınır değer analizi ve denklik bölümleme gibi tekniklerin var olmasının nedeni budur.

Sık yapılan bir yanlış, daha fazla test case'in her zaman daha iyi test demek olduğunu düşünmektir. Aynı mutlu yolu kontrol eden onlarca case yeni hata bulmadan bakım yükü ekler. Farklı davranışları, uç durumları ve geçmişteki gerilemeleri kapsayan daha küçük bir küme çok daha fazla güven verir.

## Önemli noktalar

- Test case, koşullar, adımlar ve beklenen bir sonuçla tek bir davranışı kontrol eder.
- Birbiriyle ilgili test case'ler test takımlarında toplanır.
- Arrange, Act, Assert otomatik test case'leri okunur tutar.
- İyi case'ler yalnızca mutlu yolu değil, hataları, uç durumları ve sınırları da kapsar.
- Farklı ve iyi seçilmiş case'ler, birbirine benzeyen çok sayıda case'ten iyidir.

## Örnek: Arrange, Act, Assert ile test case'ler (pytest)

```python
import pytest
from shop.coupons import apply_coupon, CouponExpired

def test_applies_ten_percent_coupon():
    cart = {"total": 200}                        # Arrange
    result = apply_coupon(cart, "SAVE10")        # Act
    assert result["total"] == 180                # Assert

def test_rejects_expired_coupon():
    with pytest.raises(CouponExpired):
        apply_coupon({"total": 200}, "SUMMER2024")

@pytest.mark.parametrize("total", [0, 0.01, 999_999])   # boundaries and extremes
def test_never_goes_below_zero(total):
    assert apply_coupon({"total": total}, "SAVE10")["total"] >= 0
```

## Sık sorulan sorular

**Test case ile test senaryosu arasındaki fark nedir?**

Test senaryosu (test scenario), girişi kontrol etmek gibi neyin test edileceğine dair üst düzey bir fikirdir. Test case'ler ise onun içindeki, her biri kesin girdileri ve beklenen sonuçları olan belirli kontrollerdir; yanlış bir parola ya da süresi dolmuş bir hesap gibi.

**Bir test case neleri içermeli?**

Bir kimlik ya da açık bir ad, ön koşullar, adımlar ya da girdi, beklenen sonuç ve çalıştırıldıktan sonra gerçek sonuç. Otomatik case'ler aynı parçaları kodla ifade eder.

**Uç durum (edge case) nedir?**

Yazılımın ele aldığı şeylerin sınırlarındaki bir girdi ya da durumdur; boş bir liste, izin verilen en yüksek değer ya da artık gün gibi. Hatalar çoğu zaman orada saklandığı için uç durumlar kendi test case'lerini hak eder.

---

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