Assertion
Doğrulama ifadesi
- Türkçe karşılığı
- doğrulama
- Okunuşu
- ısörşın
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Assertion, 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.
Programlamada ve testte assertion nedir?
Assertion, total == 100 gibi bir şeyin ya da bir listenin boş olmadığının doğru olması gerektiğini belirten bir kod satırıdır. Koşul sağlanıyorsa yürütme sessizce devam eder. Sağlanmıyorsa assertion başarısız olur; bu genellikle neyin beklendiğini ve gerçekte neyin olduğunu raporlayan bir hata fırlatılarak gerçekleşir.
Assertion'ların iki ana kullanımı vardır. Testlerde Arrange, Act, Assert desenindeki assert adımıdır: gerçek sonucu beklenen sonuçla karşılaştırırlar ve assertion içermeyen bir test yalnızca kodun çökmediğini kanıtlar. Test çerçeveleri ve assertion kütüphaneleri assert.equal, expect(x).toBe(y), nesneler için derin eşitlik (deep equality) ve bir fonksiyonun hata fırlattığının kontrolü gibi yardımcılar sağlar. Üretim kodunda ise çalışma zamanı assertion'ları her zaman geçerli olması gereken varsayımları, yani invariant'ları belgeler ve programlama hatalarını oluştukları yere yakın yakalar.
Assertion, bir yürüyüş patikasındaki kontrol noktasına benzer; rehber, grup devam etmeden önce herkesin hâlâ orada olduğunu doğrular. İyi test assertion'ları spesifiktir: bir şeyin sadece truthy olduğunu kontrol etmek yerine tam değerleri karşılaştırır ve ek hata ayıklamaya gerek bırakmadan sorunu açıklayan hata mesajları üretir.
Assertion'lar sıklıkla girdi doğrulamasıyla (input validation) karıştırılır. Assertion kendi kodunuzdaki hatalara, yani program doğruysa imkânsız olması gereken koşullara karşı koruma sağlar; doğrulama ise kullanıcılardan ya da diğer sistemlerden gelen, beklenen ve her zaman kontrol edilmesi gereken kötü veriyi ele alır. Pek çok dil assertion'ları kapatmanıza izin verdiği için kullanıcı girdisini doğrulamak üzere asla assertion'lara güvenmeyin; örneğin Python'ı -O bayrağıyla çalıştırmak assert ifadelerini tamamen kaldırır.
Önemli noktalar
- Assertion, doğru olması gereken bir koşulu belirtir ve değilse yüksek sesle başarısız olur.
- Testlerde assertion'lar gerçek sonuçları beklenen sonuçlarla karşılaştırır.
- Üretim kodunda assertion'lar invariant'ları belgeler ve hataları erken yakalar.
- Net mesajlı spesifik assertion'lar başarısızlıkları teşhis etmeyi kolaylaştırır.
- Assertion'lar kullanıcı girdisini doğrulamanın yerini tutmaz.
Örnek
def apply_discount(price, percent):
# Runtime assertion: documents an assumption about our own code
assert 0 <= percent <= 100, f"percent out of range: {percent}"
return round(price * (1 - percent / 100), 2)
def test_apply_discount():
# Test assertions: compare the actual result with the expected one
assert apply_discount(80.0, 25) == 60.0
assert apply_discount(19.99, 0) == 19.99Sık sorulan sorular
Bir assertion başarısız olduğunda ne olur?
Assertion, Python'daki AssertionError ya da JavaScript'in node:assert modülü gibi bir hata fırlatır. Bir testte çalıştırıcı o testi başarısız olarak işaretler ve beklenen ile gerçek değerleri gösterir; bir programda ise hata yakalanmadıkça yürütme durur.
Assertion'lar üretim kodunda kullanılmalı mı?
Evet, imkânsız bir durum gibi kendi kodunuzdaki bir hataya işaret eden koşullar için. Assertion'lar kapatılabileceğinden, doğru doğrulama ve hata yönetimi gerektiren kullanıcı girdisi ya da diğer beklenen hatalar için kullanmayın.
İ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.
- Test RunnerTest ve Kalite, s. 34Test runner, bir projenin otomatik testlerini genellikle tek komutla bulan, çalıştıran ve hangilerinin geçtiğini ya da başarısız olduğunu raporlayan araçtır.
- 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.
- Girdi DoğrulamaGüvenlik, s. 11Girdi doğrulama, programa giren verinin kullanılmadan önce beklenen türde, biçimde ve aralıkta olup olmadığını kontrol etme ve gerisini reddetme pratiğidir.
- İstisnaProgramlamanın Temelleri, s. 28İstisna, bir hata oluştuğunda programın normal akışını kesen bir olaydır; kod bunu programı çökertmek yerine yakalayıp ele alabilir.
- Hata ayıklamaProgramlamanın Temelleri, s. 24Hata ayıklama, bir programın neden yanlış davrandığını bulma, hatalı kodu saptama ve düzeltme sürecidir; çoğu zaman hata ayıklayıcı adlı bir araç kullanılır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin