Test Türleri Rehberi: Birim, Entegrasyon ve Uçtan Uca Test
Yazılımda birim, entegrasyon, sistem, kabul ve uçtan uca testin farkı nedir? Test türleri, test piramidi ve hangi testin ne zaman yazılacağı.
Test türleri neden ayrılır?
Yazılım test etmek tek bir iş değildir. Bir fonksiyonun doğru hesap yaptığını sınamak ile tüm uygulamanın gerçek kullanıcı akışında çalıştığını sınamak farklı kapsam, hız ve maliyet gerektirir. Bu yüzden testler kapsamlarına göre ayrılır ve her tür belirli bir hata sınıfını yakalamak için kullanılır.
Kapsam büyüdükçe test gerçeğe yaklaşır ama yavaşlar ve kırılganlaşır. Test stratejisi, bu denge içinde hangi riskin hangi türle yakalanacağına karar vermektir.
Birim testi nedir?
Birim testi, kodun en küçük anlamlı parçasını, genellikle tek bir fonksiyonu ya da sınıfı, çevresinden yalıtarak sınar. Veritabanı, ağ ya da başka servisler gerçek kullanılmaz; gerekirse taklit (mock) nesnelerle değiştirilir.
Örneğin sepet toplamını hesaplayan bir fonksiyon için indirim kuponu uygulanmış, boş sepet ve geçersiz kupon durumları ayrı birim testleriyle yazılır. Birim testler çok hızlıdır, hata çıktığında sorunun yerini doğrudan gösterir ve geliştirici kodu değiştirirken güvenle çalıştırdığı ilk güvenlik ağıdır.
Entegrasyon testi nedir?
Entegrasyon testi, ayrı ayrı çalışan parçaların birlikte doğru çalışıp çalışmadığını sınar. Bir servisin veritabanıyla, farklı modüllerin birbiriyle ya da uygulamanın dış bir API ile konuşması tipik konulardır.
Birim testlerin kaçırdığı hata sınıfı burada yakalanır: her parça kendi içinde doğru olabilir ama sözleşmeleri uyuşmayabilir. Örneğin sipariş servisi fiyatı bir biçimde gönderirken ödeme servisi başka biçimde bekliyorsa yalnızca entegrasyon testi bunu gösterir. Gerçek veritabanı ya da test ortamı gerektirdiği için birim testlerden yavaştır.
Sistem, kabul ve uçtan uca test
Sistem testi, tam kurulu uygulamayı bütün olarak sınar ve gereksinimlerin karşılandığına bakar. Kabul testi, ürünün iş tarafının beklentisini ya da kabul kriterlerini karşıladığını doğrular; çoğu zaman iş birimi ya da müşteri tarafından yapılır.
Uçtan uca (end-to-end, E2E) test, gerçek bir kullanıcı akışını baştan sona izler: tarayıcıyı açar, giriş yapar, ürünü sepete ekler, ödemeyi tamamlar ve sonucu doğrular. Playwright gibi araçlarla otomatikleştirilir. En gerçekçi test türüdür ama en yavaş ve en kırılgan olanıdır, bu yüzden yalnızca kritik akışlar için yazılır.
Test piramidi nedir?
Test piramidi, hangi türden kaç test yazılması gerektiğine dair yaygın bir kılavuzdur. Tabanda çok sayıda hızlı birim test, ortada daha az entegrasyon testi, tepede az sayıda uçtan uca test bulunur. Gerekçe basittir: üst katmandaki testler pahalıdır ve çok olunca geri bildirim yavaşlar.
Piramit ters çevrilirse, yani ağırlıklı olarak uçtan uca test varsa, test seti yavaş, kararsız ve bakımı zor hale gelir. Ürün ve ekip özelliklerine göre oran değişse de mantık genelde aynı kalır.
Diğer yaygın test türleri
Kapsam dışındaki başka eksenlerde de testler vardır: • Regresyon testi: yeni değişikliğin eski işleyişi bozmadığını doğrular. • Duman (smoke) testi: yapının temel işlevlerinin ayakta olup olmadığına hızlı bakar. • Performans ve yük testi: sistemin hız ve dayanıklılığını ölçer. • Güvenlik testi: açıkları arar. • Kullanılabilirlik testi: gerçek kullanıcıların arayüzle nasıl başa çıktığını gözler.
İlk gruba işlevsel testler, son gruplara ise işlevsel olmayan testler denir.
Mindset programlarında nerede çalışılır?
Test Otomasyonu ve QA Temelleri eğitiminde Yazılım Kalitesi ve QA Temelleri, Test Türleri ve Kapsam Yönetimi, Test Senaryosu Tasarım Teknikleri ve Test Otomasyon Temelleri ve Araç Seçimi modül başlıklarıdır. Uçtan Uca Test Stratejisi ve CI Entegrasyonu ile Playwright ile Uçtan Uca Test Otomasyonu eğitimleri test yazımı, kararsız test yönetimi, test verisi ve CI entegrasyonu üzerinde derinleşir.
İlgili Mindset programı
Test Otomasyonu ve QA Temelleri
Sık sorulan sorular
Hangi testten ne kadar yazmalıyım?
Kesin bir oran yoktur, ama genel ilke hızlı ve ucuz testlerden çok, pahalı testlerden az yazmaktır. Mantığın yoğun olduğu yerlere birim test, servislerin buluştuğu noktalara entegrasyon testi, yalnızca iş için kritik kullanıcı akışlarına uçtan uca test eklemek iyi bir başlangıçtır.
Entegrasyon testi ile uçtan uca test arasındaki fark nedir?
Entegrasyon testi birkaç bileşenin birlikte çalışmasını sınar, genellikle arayüz olmadan. Uçtan uca test ise tüm sistemi kullanıcı gözüyle, arayüzden başlayıp veritabanına kadar baştan sona dolaşır. Birincisi daha dar ve hızlıdır, ikincisi daha gerçekçi ve kırılgandır.
Testler kararsız çıkıyorsa ne yapılır?
Aynı kodda bazen geçip bazen kalan testlere kararsız (flaky) test denir. Nedenleri çoğunlukla zamanlama, paylaşılan test verisi ya da dış servis bağımlılığıdır. Çözüm; beklemeleri açık koşullara bağlamak, her testin kendi verisini hazırlaması ve dış servisleri taklit etmektir. Kararsız testi ihmal etmek, ekibin testlere güvenini azaltır.
Tester ile geliştirici testleri kim yazar?
Rol dağılımı ekibe göre değişir. Birim testleri çoğunlukla kodu yazan geliştirici yazar. Entegrasyon ve uçtan uca testlerde QA mühendisi ya da test otomasyon uzmanı daha fazla rol alır. Çevik ekiplerde kaliteyi bütün ekibin sorumluluğu saymak giderek yaygındır.
İlgili rehberler
İlgili eğitimler
Kategori: Yazılım Geliştirme, DevOps ve Bulut Teknolojileri