# Assertion (Doğrulama ifadesi)

Adres: https://softwaredictionary.org/tr/terimler/assertion
Kategori: Test ve Kalite
Son güncelleme: 2026-09-30
Türkçe karşılığı: doğrulama
Okunuşu: ısörşın

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.

---

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