
Yazılım test stratejisi, her hatayı E2E ile yakalamaya çalışmak değil; unit, entegrasyon ve uçtan uca testleri risk ve maliyete göre dağıtmaktır. Bu rehberde katman rollerini, denge kararlarını ve KOBİ projelerinde uygulanabilir adımları netleştiriyoruz.
Yazılım test stratejisi, “mümkün olan her şeyi otomatik test edelim” demek değildir. Doğru yaklaşım, hataları en ucuz ve en hızlı yakalanacak katmanda tutmak; bütçeyi ve ekip kapasitesini riskin yüksek olduğu yerlere kaydırmaktır. Bu yazıda UAT ve performans testinden ayrı olarak unit, entegrasyon ve E2E dengesi ele alınır; her şeyi E2E’ye yığma tuzağından kaçınma adımları paylaşılır.
Amaç, daha fazla test üretmek değil; regreyon maliyetini düşürmek, güvenle yayın yapmak ve bakım yükünü yönetilebilir tutmaktır. KepezWeb gibi özel yazılım ve dijital ürün işlerinde bu denge, özellikle küçük ekiplerde kaliteyi belirler.
Yazılım test stratejisi neden katmanlı kurulur?
Otomatik testler aynı işi farklı maliyetlerle yapar. Birim test hızlı ve ucuzdur; entegrasyon testi gerçek bileşen bağlarını doğrular; E2E ise kullanıcı yolunu simüle eder ama yavaştır, kırılgandır ve bakımı pahalıdır.
Katmanlı strateji şu soruya cevap arar: Bu hata hangi seviyede en az maliyetle yakalanır? İş kuralı bir fonksiyondaysa unit yeterlidir. Ödeme sağlayıcısıyla sözleşme bozuluyorsa entegrasyon gerekir. Sepetten ödeme onayına kadar akış bozuluyorsa E2E anlamlıdır.
UAT iş onayını, performans testi yük altındaki davranışı hedefler. Bunlar kritiktir ama otomatik katman dengesinin yerine geçmez. Strateji kurarken bu alanları karıştırmamak, kapsamı şişirmeyi engeller.
Unit, entegrasyon ve E2E: her katmanın rolü
Unit test
Unit test, tek bir birimin (fonksiyon, sınıf, servis metodu) davranışını dış bağımlılıklardan izole ederek doğrular. Hızlı geri bildirim verir; geliştirici commit öncesi regreyonu burada yakalar.
İyi unit testler iş kuralını net ifadelerle tarif eder: indirim hesabı, stok rezervasyonu, yetki kontrolü, tarih aralığı doğrulama gibi. Kötü unit testler ise yalnızca getter/setter veya framework detayını tekrar eder; değer üretmez.
Entegrasyon test
Entegrasyon testi, birimlerin birlikte çalışmasını doğrular: veritabanı, kuyruk, e-posta servisi, ödeme API’si, kimlik doğrulama katmanı. Burada amaç “fonksiyon doğru mu?” değil, “sözleşme ve veri akışı bozuluyor mu?” sorusudur.
Örneğin oturum, JWT ve rol-izin kararları çoğu zaman birden fazla bileşene yayılır. Bu tür akışlarda yalnızca unit yetmez; gerçek veya kontrollü bağımlılıklarla entegrasyon gerekir. Kimlik katmanı için detaylı karar çerçevesine yazılım kimlik doğrulama ve yetkilendirme rehberi üzerinden bakabilirsiniz.
E2E (uçtan uca) test
E2E, tarayıcı veya API üzerinden kullanıcı senaryosunu baştan sona koşturur. “Giriş yap → ürün ekle → ödeme başlat → onay sayfasını gör” gibi kritik yollar burada yer alır.
E2E’nin gücü gerçekçiliğidir; zayıf yanı maliyeti ve kırılganlığıdır. UI değişikliği, zaman aşımı, test verisi kirliliği ve ortam kararsızlığı sık kırılmaya yol açar. Bu yüzden E2E sayısı az, senaryolar ise iş değeri yüksek olmalıdır.
Test piramidi ve “her şeyi E2E yap” tuzağı
Klasik test piramidi, tabanda çok sayıda unit, ortada daha az entegrasyon, tepede az E2E önerir. Bu bir dogma değil; maliyet ve geri bildirim hızına dayalı bir kılavuzdur.
“Her şeyi E2E yapalım, o zaman gerçek kullanıcıyı taklit etmiş oluruz” yaklaşımı kısa vadede güven verir gibi görünür. Uzun vadede pipeline yavaşlar, flaky test artar, ekip kırılan testleri susturmaya başlar. Sonunda test paketi güvene değil gürültüye dönüşür.
Tuzaktan kaçınmak için üç pratik kural işe yarar:
- Aynı iş kuralını bir üst katmanda tekrar etmeyin; alt katmanda yakalanabiliyorsa orada tutun.
- E2E’ye yalnızca para, veri kaybı, yasal risk veya ana gelir akışı taşıyan yolları koyun.
- UI detayını değil, iş sonucunu assert edin (ör. “buton mavi mi?” yerine “sipariş oluştu mu?”).
Bütçe ve risk üzerinden dengeleme nasıl yapılır?
İyi bir yazılım test stratejisi, test sayısını değil riski bütçeler. Her özellik için şu üç soruyu sorun:
- Hata olursa iş etkisi nedir? (ciro, itibar, veri bütünlüğü, güvenlik)
- Hata ne sıklıkla değişen kod bölgesinde oluşur?
- Bu hata hangi katmanda en ucuza yakalanır?
Yüksek risk + sık değişim alanları (ödeme, stok düşümü, yetki, faturalama) hem unit hem entegrasyon hem seçili E2E ister. Düşük risk + nadir değişim alanları (statik içerik sayfası, basit form validasyonu) için hafif unit ve manuel duman kontrolü yeterli olabilir.
Bütçe kısıtı olduğunda önce “en pahalı hatayı en erken yakalayan” yatırımı seçin. Bu çoğu zaman kritik iş kurallarında unit + birkaç sağlam entegrasyon + 3–7 çekirdek E2E senaryosu demektir. Sayı sabit değildir; ürünün gelir modeline göre değişir.
| Katman | Ne doğrular? | Maliyet / hız | Ne zaman öncelik? |
|---|---|---|---|
| Unit | İş kuralı, hesap, karar mantığı | Düşük / çok hızlı | Sık değişen kurallar, saf fonksiyonlar |
| Entegrasyon | DB, API, servis sözleşmeleri | Orta | Sınır geçişleri, dış servis, veri tutarlılığı |
| E2E | Kritik kullanıcı yolu | Yüksek / yavaş | Gelir ve güvenlik taşıyan ana akışlar |
Neyi hangi katmanda test etmeli? Karar örnekleri
Somut örnekler, dengeyi netleştirir:
- KDV ve indirim hesabı: Unit. Girdi-çıktı tablosu ile birçok kenar durumu ucuza kapsanır.
- Stok rezervasyonu + sipariş kaydı: Entegrasyon. Transaction, eşzamanlılık ve veri tutarlılığı burada bozulur.
- Misafir ödeme akışı: E2E (çekirdek). Birden fazla ekran ve servis birleşir; iş sonucu kritiktir.
- E-posta şablon metni: Genelde manuel veya düşük öncelikli kontrol. E2E’ye bağlamak bakım maliyeti üretir.
- Rol bazlı menü görünürlüğü: Unit + hafif entegrasyon. Tam tarayıcı turu her rol için şart değildir.
Karar verirken “bu test kırılırsa ne anlarız?” sorusu da önemlidir. Anlam üretmeyen assert’ler (yalnızca sayfa açıldı) stratejiyi şişirir ama koruma sağlamaz.
KOBİ ve özel yazılım projelerinde uygulanabilir adımlar
Küçük ekiplerde kurumsal test organizasyonunu kopyalamak gerekmez. Sade bir kurulum çoğu zaman daha sürdürülebilirdir:
- Kritik yolları yazın: Ürünün 3–7 “bozulursa iş durur” senaryosunu listeleyin.
- Kuralları unit’e indirin: Hesap ve karar mantığını servis katmanında test edilebilir hale getirin.
- Sözleşmeleri sabitleyin: Ödeme, kargo, ERP veya kimlik servislerinde entegrasyon testlerini sınırlı ve kararlı veriyle kurun.
- E2E’yi dar tutun: Yalnız çekirdek mutlu yol + 1–2 yüksek riskli alternatif yol.
- Flaky politikası koyun: İki kez kararsız kırılan test ya düzeltilir ya da karantinaya alınır; sessizce ignore edilmez.
- Pipeline’ı kademelendirin: Her PR’da unit + hızlı entegrasyon; gece veya pre-release’te E2E.
Özel ürün geliştirirken test stratejisi, mimari kararlarla birlikte düşünülmelidir. Servis sınırları belirsizse entegrasyon testleri şişer; UI’da iş kuralı birikirse E2E zorunlu hale gelir. Yazılım geliştirme sürecinde bu sınırların erken netleşmesi, test maliyetini doğrudan etkiler.
PHP/MySQL tabanlı özel uygulamalarda da aynı mantık geçerlidir: iş kuralını controller’dan servis katmanına taşımak unit kapsamını büyütür, kırılgan tarayıcı testine bağımlılığı azaltır. Bu yaklaşım özel PHP/MySQL yazılım projelerinde bakım yükünü düşürmek için özellikle işe yarar.
Stratejiyi yaşayan bir disiplin haline getirmek
Test stratejisi bir kez yazılıp rafta bırakılan belge olmamalıdır. Her sprint veya sürüm sonunda şu gözden geçirme yeterlidir:
- Hangi regreyon canlıya kaçtı ve hangi katmanda yakalanabilirdi?
- Hangi E2E senaryoları en çok kırıldı, hangisi değer üretmiyor?
- Yeni özellik hangi risk sınıfında ve bütçesi ne kadar test istiyor?
KepezWeb ekiplerinde de gördüğümüz gibi, sürdürülebilir kalite “mükemmel kapsama yüzdesi”nden çok, doğru yerde doğru katmanı seçmekle gelir. Ölçüt, yeşil pipeline estetiği değil; kullanıcıya yansıyan hatanın azalması ve yayın korkusunun düşmesidir.
Sıkça Sorulan Sorular
Yazılım test stratejisi olmadan sadece E2E yazmak yeterli midir?
Hayır. Yalnız E2E, yavaş geri bildirim ve yüksek bakım maliyeti üretir. İş kuralları unit’te, sözleşmeler entegrasyonda, kritik yollar E2E’de tutulduğunda paket hem daha hızlı hem daha güvenilir olur.
Unit test kapsam yüzdesi hedefi koymak gerekir mi?
Tek başına yüzde hedefi yanıltıcı olabilir. Önce riskli iş kurallarını kapsayın. Düşük değerli kodda yüzde şişirmek, kritik akışları açıkta bırakmaktan daha az fayda sağlar.
Entegrasyon testinde gerçek dış servis mi, mock mu kullanılmalı?
Sözleşme ve hata senaryolarını kontrol etmek için çoğu zaman test double veya sandbox yeterlidir. Gerçek servis kullanımı maliyeti ve kararsızlığı artırır; yalnızca sözleşme doğrulaması için sınırlı senaryolarda tercih edilmelidir.
E2E senaryo sayısı ne kadar olmalı?
Sabit bir sayı yoktur. Pratik başlangıç, gelir ve veri bütünlüğü taşıyan birkaç çekirdek yoldur. Senaryo eklemeden önce “bu risk alt katmanda yakalanamaz mı?” sorusunu sorun.
UAT, otomatik test stratejisinin yerini tutar mı?
Tutmaz. UAT iş biriminin kabul kararıdır; otomatik katmanlar ise regreyonu erken ve tekrarlanabilir yakalar. İkisi tamamlayıcıdır, birbirinin alternatifi değildir.
Ürününüzde unit, entegrasyon ve E2E dengesini netleştirmek; yayın riskini ve bakım yükünü yönetmek istiyorsanız KepezWeb ile kapsamı birlikte sadeleştirebilirsiniz. İhtiyacınıza uygun yol haritası için teklif al sayfasından projenizi iletebilirsiniz.


