Hata Tahminleme (Error Guessing) Nedir?
Yazılım test süreçlerinde analitik test tasarım teknikleri (Sınır Değer Analizi, Eşdeğer Paylara Ayırma vb.) belirli kurallara ve matematiksel sınırlara dayanır. Ancak kodun ve sistem mimarisinin doğası, sadece matematiksel formüllerle açıklanamayan, insan faktöründen veya entegrasyon karmaşasından beslenen zayıf noktalar barındırır.
ISTQB standartlarında tecrübeye dayalı bir test tekniği olarak konumlandırılan Hata Tahminleme (Error Guessing); test mühendisinin geçmiş deneyimlerine, yazılımın mimari yapısına ve geliştirici ekibin kodlama alışkanlıklarına dayanarak potansiyel hata noktalarını sezgisel olarak öngörme sanatıdır.
Hata Tahminlemenin Temel Dinamikleri
Hata Tahminleme, rastgele yapılan bir test değildir. Tam aksine, arka planında ciddi bir teknik birikim ve yapılandırılmış bir mantık barındırır. Bu tekniğin beslendiği üç temel kaynak bulunur:
Geçmiş Hata Örüntüleri (Defect Patterns): Benzer mimarilerde, dillerde veya entegrasyonlarda daha önce hangi aşamalarda kriz yaşandığının analiz edilmesidir.
Geliştirici Davranış Analizi: Yazılımcıların kodlama esnasında gözden kaçırmaya meyilli olduğu uç durumların (edge case) ve hata eğilimlerinin öngörülmesidir.
Teknik Altyapı Bilgisi: Kullanılan framework'lerin, migration veya queue mekanizmalarının doğasından kaynaklanan kronik zafiyetlerin bilinmesidir.
Pratik Uygulama: Bir Test Mühendisi Neleri Tahmin Eder?
Hata tahminleme tekniğini uygularken, analitik dökümanlarda yazmayan ancak canlı ortamlarda sıkça sistem kesintilerine yol açan şu teknik alanlara odaklanılır:
1. Veri Girişleri ve Sınır Kontrolleri
Boş (Null) veya tanımsız (Undefined) bırakılan alanların API seviyesinde ele alınma biçimi.
Form alanlarına özel karakterlerin, SQL injection veya XSS riski taşıyan script'lerin girilmesi.
Metin alanlarında beklenenden çok daha uzun girdilerle bellek yönetimi ve veri tabanı kayıt sınırlarının zorlanması.
2. Hesaplama ve Dönüşüm Hataları
Finansal işlemlerde ondalıklı sayıların (float/double) yuvarlanması esnasında oluşan kuruş farkları.
Bölme işlemlerinde paydanın "0" (Zero Division) gelme ihtimalinin kod bloklarında yakalanıp yakalanmadığı.
3. Zamanlama ve Entegrasyon Senaryoları
Üçüncü parti bir API'nin zaman aşımına (timeout) uğraması durumunda sistemin hata yönetim (try-catch) mekanizması.
Kullanıcının ödeme butonuna ardı ardına iki kez basması (double-click) durumunda mükerrer işlem oluşma riski.
Hata Tahminleme Sürecinin Yürütülmesi
Bu tekniği sistematik hale getirmek ve bireysel olmaktan çıkarıp kurumsal hafızaya dönüştürmek için şu adımlar izlenir:
1.Geçmiş Hata Listelerinin (Fault List) İncelenmesi:Analiz Aşaması.
Önceki sprint'lerde veya benzer projelerde Jira üzerinde açılan en kritik bug'lar analiz edilir. Hangi modüllerin hataya daha eğilimli olduğu haritalandırılır.
2.Teknik ve Mimari İnceleme:Keşif Aşaması.
Projenin mimari dökümanları incelenir. Mikroservislerin birbiriyle olan asenkron haberleşme noktaları ve veri tabanı ilişkileri masaya yatırılır.
3.Tahmin Listesinin Çıkarılması:Tasarım Aşaması.
Mühendislik sezgilerine dayanarak "Yazılımcı burada neyi unutmuş olabilir?" sorusu etrafında özel test senaryoları ve kontrol listeleri (checklist) hazırlanır.
4.Koşum ve Bulguların Raporlanması:Doğrulama Aşaması.
Hazırlanan sıra dışı senaryolar sistem üzerinde koşulur. Bulunan hatalar, kök neden analiziyle beslenerek gelecekteki tahmin listelerini güncellemek üzere kaydedilir.
Avantajları ve Sınırlamaları
Not: Hata Tahminleme tek başına bir test stratejisi olamaz; ancak analitik tekniklerle (White-box veya Black-box) birleştirildiğinde çarpan etkisi yaratır.
Avantajları:
Maliyet Avantajı: Analiz dökümanlarında açıkça belirtilmeyen ancak mimari olarak risk taşıyan mantık hatalarını erkenden açığa çıkarır.
Esneklik: Detaylı gereksinim dokümanlarının bulunmadığı, çevik (Agile) ve hızlı ilerleyen projelerde test kapsamını hızla genişletir.
Sınırlamaları:
Deneyim Bağımlılığı: Tamamen testi yürüten mühendisin teknik yetkinliğine ve tecrübesine endekslidir; junior seviyedeki bir uzmanın bu örüntüleri görmesi daha zordur.
Yeni Teknolojilerde Kısıtlılık: Ekibin daha önce hiç deneyimlemediği yeni bir teknoloji veya mimari kullanıldığında tahmin gücü zayıflayabilir.
Özetle
Hata Tahminleme (Error Guessing), sadece bir form doldurup "Gönder" butonuna basmaktan çok daha derin bir mühendislik vizyonudur. Bir test mühendisi, sistemin sadece nasıl çalışması gerektiğini değil, nasıl kırılabileceğini de öngörebilendir. Analitik test tekniklerinin bıraktığı boşlukları bu sezgisel ve tecrübeye dayalı yaklaşımla doldurarak, canlı ortama kaçabilecek kritik hataların önüne erkenden geçebilir ve yazılım kalitesini üst seviyeye taşıyabilirsiniz.