Otomatik testler, sistemi farklı seviyelerde kapsamlı test etmek için birim (unit), entegrasyon (integration) ve uçtan uca (end-to-end, E2E) olarak gruplandırılır.
Soru Tarihi: Bu sınıflandırma, uygulamaları hem parçalar halinde hem de bütün olarak test etme ihtiyacından doğmuştur. Bu yüzden test katmanları belirlenir:
Sorun: Hatalar genellikle yalnızca bir metodun mantığında değil, aynı zamanda bileşenlerin kesişim noktalarında ya da tüm sistemi dış hizmetlerle "gerçek" olarak çalıştırırken ortaya çıkar. Her şeyi tek bir yere koyarsanız, hatayı hızlı bir şekilde yerelleştirmek veya nerede oluştuğunu anlamak zorlaşır.
Çözüm:
Test türlerini ayırt etmek hayati önem taşır:
Anahtar özellikler:
Entegrasyon testlerini sadece "büyük" birim testleri olarak mı değerlendirebiliriz?
Hayır, entegrasyon testleri birden fazla bileşenin birlikte çalışmasını test eder ve yalnızca ayrı fonksiyonları değil. Bu yüzden, gerçek hizmetlerin birbiriyle etkileştiği durumlarda sahte (mock) kullanmak her zaman mümkün olmayabilir.
Tüm testler uçtan uca (E2E) olmalı mı?
Hayır, bu pahalı ve karmaşık bir yaklaşımdır. E2E testleri yalnızca kritik kullanıcı senaryoları için gereklidir, çoğu mantık diğer testlerle kapsanır.
Birim testleri her zaman hızlı mıdır?
Her zaman değil. Kodun izole edilmesi mümkün olmayabilir ya da bir metodun karmaşık dış kaynaklara bağımlılığı olabilir. Bu durumda test, birim testi olmaktan çıkar.
Şirket, yalnızca E2E testleri ile temel işlevselliği kapsadı — her düzeltme gece kontrol edildi, testler istikrarsız bir şekilde başarısız oldu, hatalar geç keşfedildi.
Artılar:
Eksiler:
Ekip, test piramidalarını inşa etti: alt kısım — birim testleri, ortası — entegrasyon testleri, üst kısım — sadece en kritik E2E.
Artılar:
Eksiler: