5.3 | Test Ortamı: Hataları Otomatik Yakalamak

Yayınlanma Tarihi: 2026-05-13

Şu ana kadar hataları hep "oluştuktan sonra" nasıl avlayacağımızı konuştuk. Peki ya hataları daha kullanıcıya ulaşmadan yakalamanın bir yolu olsaydı? İşte buna Yazılım Testleri diyoruz. Testler, kodunuzun doğruluğunu sizin yerinize her saniye denetleyen otomatik kontrol kuleleridir.

1. Neden Test Yazıyoruz? (Önce Güvenlik)

Kodunuz büyüdükçe, bir yeri düzeltirken farkında olmadan başka bir yeri bozma riskiniz artar.

  • Huzurlu Güncellemeler: Testleriniz varsa, yeni bir özellik eklediğinizde "Acaba eski özellikler bozuldu mu?" diye korkmanıza gerek kalmaz.
  • Ajan Denetimi: Ajanın yazdığı kodun gerçekten istediğiniz işi yapıp yapmadığını teyit etmenin en profesyonel yolu, ajana o kod için bir test yazdırmaktır.

2. Testin Üç Silahşörü: Unit, Widget ve Integration

  • Unit Test: En küçük parçayı (örn: bir indirim hesaplama fonksiyonu) test eder.
  • Widget Test: (Flutter özelinde) Ekrandaki butonların ve yazıların doğru yerde olup olmadığını kontrol eder.
  • Integration Test: Uygulamanın bir bütün olarak çalışıp çalışmadığını simüle eder.

[Image of software testing pyramid showing unit, integration, and UI tests]

3. Ajanı Test Yazarı Olarak Kullanmak

Test yazmak bazen yorucu gelebilir maar ajanla bu süreç çok hızlıdır:

  • Test Üretimi: Fonksiyonunuzu ajana gösterip "Bu fonksiyon için tüm uç durumları kapsayan Unit Testleri yazar mısın?" dediğinizde, ajan sizin aklınıza gelmeyecek senaryoları saniyeler içinde hazırlar.
  • TDD (Test Driven Development): Profesyonel bir yaklaşım olarak önce testi yazdırıp, sonra ajandan o testi geçecek kodu yazmasını isteyebilirsiniz.

4. Kritik Soru: "Neden Testi Ajana Yaptırmak Yerine Manuel Olarak Test Kodları Yazdırıyoruz?"

Ajan madem bu kadar zeki, neden kodu ona verip "bir bak bakalım hata var mı" demiyoruz da dosya kalabalığı yapıyoruz? İşte hayati sebepler:

  • Bağlam ve Ölçek Sorunu: Küçük projelerde ajan her şeyi kavrayabilir. Ancak yazılım büyüdüğünde kod miktarı devasa boyutlara ulaşır. Ajanın on binlerce satırlık bir sistemde her detayı anlık tarayıp, tüm ilişkileri analiz ederek hatayı nokta atışı bulması imkansız hale gelir. Kayıtlı testler ise bu devasa yapıda her zaman neyi kontrol edeceğini bilir.
  • Yüksek Maliyet: Bir testi işlemcide çalıştırmak neredeyse maliyetsizdir. Ancak her seferinde ajanı (AI motorunu) çağırıp analiz yaptırmak, test çalıştırma maliyetiyle kıyaslanamayacak kadar yüksektir. Test kodları, ekonomik ve hızlı bir denetim sağlar.
  • Halüsinasyon Riski: Ajan kodu zihninde simüle ederken hata yapabilir (çalışıyor sanabilir). Yazılı bir test dosyası ise gerçek işlemci üzerinde fiziksel olarak koşar.
  • Bağımsız Hakemlik: Ajan sizin hatalı mantığınızı onaylayabilir. Bağımsız bir test dosyası ise kodunuzu objektif ve sarsılmaz kurallara göre denetler.
  • Sürekli Denetim (CI/CD): Yazılı testler projenizin bir parçasıdır ve siz orada olmasanız bile her güncellemede sistemi otomatik olarak korumaya devam eder.

5. Kod Okuryazarlığı ve Test Raporları

Testler başarısız olduğunda, ajan size teknik bir rapor sunar. Kod Okuryazarlığınız sayesinde bu raporu okuyup; hatanın kodun kendisinde mi yoksa test kurgusunda mı olduğunu ayırt edebilirsiniz. Unutmayın; iyi bir yazılımcı sadece kod yazan değil, yazdığı kodu testlerle garanti altına alabilen kişidir.


Sözlük (Glossary)

  • Unit Test: Kodun en küçük parçalarının bağımsız denetimi.
  • Regression (Gerileme): Yeni bir özelliğin eski özellikleri bozması.
  • Edge Case (Uç Durum): Beklenmedik, uç senaryolar (örn: doğum tarihine gelecek yılın yazılması).
  • CI/CD: Kodun her güncellendiğinde otomatik olarak test edilip yayına hazırlanması.

Sonraki Adım: 6.0 | Backend ve Veri Yönetimi: Projenin Hafızası ve Zekası.