Test Case
Test Senaryosu
- Türkçe karşılığı
- test durumu
- Okunuşu
- test keys
Günlük kullanımda iki ad da yaygın.
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
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"] >= 0Sı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.
İlgili sayfalar
- Birim TestiTest ve Kalite, s. 4Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.
- AssertionTest ve Kalite, s. 2Assertion, kodun o noktasında bir koşulun doğru olması gerektiğini bildiren ve koşul yanlışsa testi ya da programı bir hatayla durduran ifadedir.
- Test FixtureTest ve Kalite, s. 29Test fixture, bir testin çalışmadan önce ihtiyaç duyduğu örnek veri ya da yapılandırılmış nesne gibi bilinen durum ile onu kurup temizleyen koddur.
- Acceptance CriteriaEkipler ve Süreç, s. 1Acceptance criteria, tek bir user story'nin ya da backlog öğesinin Product Owner'ın kabulü için karşılaması gereken, test edilebilir koşullardır.
- Kalite GüvencesiTest ve Kalite, s. 12Kalite güvencesi (QA), yazılımın gereksinimlerini karşılayıp güvenilir çalışmasını sağlayan uygulamalardır; hataları yalnızca bulmayı değil, önlemeyi amaçlar.
- Davranış Odaklı GeliştirmeTest ve Kalite, s. 6Davranış odaklı geliştirme, geliştiricilerin, test uzmanlarının ve iş tarafının otomatik testlere dönüşen sade dilli örneklerde anlaştığı bir pratiktir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin