Ana içeriğe geç

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.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/assertion

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

Python'da bir çalışma zamanı assertion'ı ve test assertion'larıpython
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.99

Sı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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar