Entegrasyon testi: parçalar bir araya geldiğinde çalışıyor mu?
Sözlük

Entegrasyon testi: parçalar bir araya geldiğinde çalışıyor mu?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Entegrasyon testi nedir, modüllerin ve sistemlerin birlikte çalışmasını nasıl doğrular? Tanım, yaklaşımlar, kurgusal örnek ve birim testinden farkı.

Entegrasyon testi nedir?

Entegrasyon testi (integration testing), ayrı ayrı geliştirilmiş modüllerin, servislerin ya da sistemlerin bir araya geldiğinde doğru çalışıp çalışmadığını doğrulayan test türüdür. Birim testi tek bir fonksiyonun veya sınıfın kendi içinde doğru çalışmasını sınar; entegrasyon testi ise bu parçalar arasındaki bağlantıya bakar: veri doğru taşınıyor mu, çağrılar beklenen biçimde yapılıyor mu, hatalar düzgün iletiliyor mu?

Birçok hata parçaların kendisinde değil, aralarındaki varsayımlarda yaşar. Biri tarihi bir biçimde gönderir, diğeri başka bir biçimde bekler; ikisi de kendi birim testinden geçer ama birlikte çalışmaz. Entegrasyon testi bu tür uyumsuzlukları yakalamak için vardır.

Nasıl çalışır? Yaklaşımlar

Entegrasyon testinin kurgusu, hangi parçaların birleştirileceğine ve hangilerinin taklit edileceğine bağlı olarak değişir. Yaygın yaklaşımlar şunlardır:

  • Büyük patlama (big bang): tüm modüller birleştirilir ve birlikte test edilir; kurulumu kolaydır ama hatanın kaynağını bulmak zordur
  • Aşağıdan yukarıya: en alt katmandan başlanır, üst katmanlar eklenerek ilerlenir
  • Yukarıdan aşağıya: üst katmandan başlanır, alt katman henüz yoksa taklit nesnelerle (stub) doldurulur
  • Sandviç: iki yönün birleşimi
  • Sözleşme (contract) testi: servisler arasındaki beklentilerin, bağımsız olarak doğrulanması

Test edilen bağlantı bir veritabanı, mesaj kuyruğu, dış API ya da başka bir iç servis olabilir. Çoğu zaman gerçek bir test veritabanı ve geçici ortamlar kullanılır; dış servislerin yerine kontrollü taklitler konur.

Küçük bir örnek

Bir sipariş servisi, ödeme servisini çağırıp ardından stok servisine düşüm bildirimi gönderiyor olsun. Birim testleri her servisin kendi mantığını ayrı ayrı doğruluyor ve geçiyor.

Entegrasyon testi ise şunu dener: sipariş verildiğinde ödeme çağrısı doğru tutar ve para birimiyle yapılıyor mu? Ödeme onayı gelirse stok düşüyor mu? Ödeme reddedilirse sipariş kaydı iptal olarak işaretleniyor ve stok düşmüyor mu? Testte ödeme sağlayıcısının gerçek ortamı yerine bir sanal ortam (sandbox) ya da taklit servis kullanılır. Böylece test tekrarlanabilir olur ve gerçek para hareketi oluşmaz.

Birim ve uçtan uca testten farkı

Test piramidi mantığında birim testleri tabanda, çok sayıda ve hızlıdır; entegrasyon testleri ortada, daha az sayıda ve daha yavaştır; uçtan uca (end-to-end) testler tepede, en az sayıda ve en yavaştır. Entegrasyon testi gerçek bağlantıları kullandığı için birim testinden yavaş ve kurulumu daha karmaşıktır; ama kullanıcı arayüzünü de içeren uçtan uca testten daha hızlı ve hata kaynağını göstermesi bakımından daha açıklayıcıdır.

İki testin farkı ayrı bir sayfada ayrıntılı karşılaştırılmıştır. Duman testi ise farklı bir eksendedir: sürümün temel işlevlerini hızlıca kontrol eder ve entegrasyon testinin bir alt kümesini içerebilir.

Nerede kullanılır? Mindset bağlamı

Entegrasyon testi, mikro hizmet mimarilerinde, dış sistemlerle bağlantı kuran uygulamalarda, veri tabanı erişimi olan her katmanda ve sürekli entegrasyon hattında yaygın olarak kullanılır. Yazılım geliştiriciler, test otomasyon mühendisleri ve QA ekipleri testleri birlikte yazar ve bakımını yapar.

İyi uygulama, her entegrasyon noktası için bir ya da birkaç öncelikli senaryo yazmak, test verisini her çalıştırmada temiz kurmak ve testleri ortam durumundan bağımsız tutmaktır.

Mindset kataloğunda Proje Test ve Doğrulama Süreçleri test türlerinin kapsamlı incelemesini; Test Otomasyonu ve QA Temelleri test türleri, kapsam yönetimi ve otomasyon temellerini; Test Driven Development ve Unit Testing Uzmanlığı ise mocking ve test izolasyonu tekniklerini işler. Entegrasyon testini otomasyona taşımak isteyen yazılım ekipleri için TDD programındaki mocking ve izolasyon modülü, taklit nesne kurgusunu anlamak açısından doğrudan ilişkilidir.

İlgili Mindset programı

Proje Test ve Doğrulama Süreçleri

Sık sorulanlar

Sık sorulan sorular

Entegrasyon testlerinde gerçek veritabanı mı kullanılmalı?

Çoğunlukla evet. Veritabanı ile etkileşim, entegrasyon testinin asıl konusudur; sorgu, işlem ve şema uyumu ancak gerçek bir veritabanıyla sınanabilir. Bu amaçla her testte temiz kurulan ve sonra silinen geçici bir test veritabanı kullanılır. Üretim verisiyle çalışmak ise hem risklidir hem de testi tekrarlanamaz yapar.

Dış servislere bağlı bir entegrasyonu nasıl test ederim?

Dış servisin sunduğu sanal ortamı ya da kontrollü bir taklit servisi kullanabilirsiniz. Taklit, servisin beklenen yanıtlarını ve hata durumlarını simüle eder; böylece gerçek servisin kesintisinden ya da ücretli çağrılarından etkilenmezsiniz. Sözleşme testi, taklidin gerçek servisle uyumunu sürekli doğrulayarak taklit ile gerçeğin ayrışmasını önler.

Entegrasyon testi başarısız olduğunda sorun nerededir?

Birim testleri geçiyorsa sorun çoğunlukla parçalar arasındaki sözleşmededir: veri biçimi, alan adı, kimlik doğrulama, zaman aşımı ya da sıralama. Hangi çağrının hangi yanıtı döndürdüğünü gösteren kayıtlar, hata ayıklamayı hızlandırır. Bu yüzden entegrasyon testlerinde ayrıntılı günlük tutmak önemlidir.

Entegrasyon testi sürekli entegrasyon hattında her seferinde mi çalışmalı?

Hızlı olanlar her değişiklikte, yavaş ve pahalı olanlar ise belirli aralıklarla ya da birleştirme öncesinde koşulabilir. Hat tasarımı, geri bildirim hızı ile güven arasındaki dengeye bağlıdır. Önce duman testi gibi hızlı kontroller, ardından entegrasyon testleri çalıştırılırsa bozuk bir sürüm daha erken fark edilir.

Entegrasyon Testi Nedir? Nasıl Yapılır, Örnek