Ana içeriğe geç

Yan yana

Birim TestivsEntegrasyon Testi

Birim testi ile entegrasyon testi arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

Birim testi, bir fonksiyon gibi küçük bir parçayı tek başına, milisaniyelerde denetler; entegrasyon testi ise birkaç parçanın birlikte çalıştığını denetler.

Birim Testi

Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.

Birim Testi sayfasını oku

Entegrasyon Testi

Entegrasyon testi, kod, veritabanı ve API gibi bir sistemin birkaç parçasının birlikte doğru çalışıp çalışmadığını kontrol eden otomatik bir testtir.

Entegrasyon Testi sayfasını oku

Birim Testi ve Entegrasyon Testi karşılaştırması

ÖzellikBirim TestiEntegrasyon Testi
KapsamTek bir fonksiyon, metot ya da sınıfBirlikte çalışan birkaç bileşen
BağımlılıklarMock, stub ya da sahte nesnelerle değiştirilirGerçek ya da gerçeğe yakın, örneğin bir test veritabanı
HızMilisaniyeler; binlercesi saniyeler içinde çalışırG/Ç, ağ ve kurulum nedeniyle daha yavaş
Bir hata neyi gösterirBozulan fonksiyonu tam olarakEtkileşimin bir yerindeki sorunu
Neyi yakalarBirimin içindeki mantık hataları ve uç durumlarBağlantı, veri biçimi, sorgu ve yapılandırma hataları
KurulumAsgari: kodu girdilerle çağırmak yeterVeritabanları, servisler ya da konteynerler çalışıyor olmalı
Pakette payıTestlerin çoğu, test piramidinin tabanındaDaha az test, piramidin ortasında

Fark, açıklamalı

Birim testi, test edilebilen en küçük kod parçasını, genellikle bir fonksiyonu ya da sınıfı, bağımlılıkları sahte nesneler (fake) ya da mock'larla değiştirilmiş olarak doğrular. Entegrasyon testi ise birkaç bileşenin birlikte çalıştığını doğrular; örneğin bir API rotasının gerçek veritabanıyla ya da ağ üzerinden konuşan iki servisin çalışmasını.

Fark kapsamdadır ve kapsam ödünleşimleri belirler. Birim testleri hızlı, kesin ve kararlıdır; bir hata doğrudan bozuk fonksiyonu gösterir, ama parçalar arasındaki bağlantılardaki sorunları yakalayamaz. Entegrasyon testleri yanlış sorguları, uyuşmayan veri biçimlerini ve yapılandırma hatalarını yakalar, ama daha yavaştır, daha fazla kurulum gerektirir ve hata ayıklaması daha zor olabilir.

Sağlıklı bir test paketi ikisini de kullanır; bu çoğu zaman bir test piramidi olarak gösterilir: tabanda çok sayıda birim testi, ortada daha az entegrasyon testi ve tepede az sayıda uçtan uca test. Birim testleri kod yazarken hızlı geri bildirim verir, entegrasyon testleri ise parçaların gerçekten birbirine uyduğunu doğrular.

Sık yapılan bir yanlış, yüksek birim testi kapsamının sistemin çalıştığı anlamına geldiği düşüncesidir. Her birim testlerinden geçerken bütün yine başarısız olabilir; örneğin bir fonksiyon tarihleri, bir sonraki bileşenin beklemediği bir biçimde döndürdüğünde.

Hangisini kullanmalısınız?

Birim Testi şu durumlarda doğru seçim:

  • Saf mantığı, hesaplamaları ya da uç durumları test ediyorsunuz.
  • Kod yazarken saniyeler içinde geri bildirim istiyorsunuz.
  • Hangi fonksiyonun bozulduğunu tam olarak belirlemeniz gerekiyor.

Entegrasyon Testi şu durumlarda doğru seçim:

  • Kodunuzun bir veritabanıyla ya da API ile doğru konuştuğunu doğrulamanız gerekiyor.
  • Hatalar genellikle modüllerin birleştiği yerlerde çıkıyor.
  • Yapılandırmayı, sorguları ya da serileştirmeyi doğruluyorsunuz.

Bir fiyatlandırma fonksiyonunu ve bir users rotasını test etmek

Birim Testijavascript
// Unit test: one function, no outside dependencies
import { applyDiscount } from "./pricing";

test("applies a 10% discount", () => {
  expect(applyDiscount(100, 0.1)).toBe(90);
});
Entegrasyon Testijavascript
// Integration test: HTTP route + a real test database
import { db } from "./db";

test("POST /users stores the user", async () => {
  const res = await fetch("http://localhost:3000/users", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ name: "Ada" }),
  });
  const { id } = await res.json();
  expect((await db.users.findById(id)).name).toBe("Ada");
});

Sık sorulan sorular

Kaç birim testi, kaç entegrasyon testi yazmalıyım?

Yaygın bir kılavuz test piramididir: çoğunlukla birim testleri, daha az entegrasyon testi ve yalnızca bir avuç uçtan uca test. Doğru karışım, hatalarınızın genellikle nereden geldiğine bağlıdır.

Entegrasyon testi, uçtan uca test ile aynı şey mi?

Hayır. Entegrasyon testi birkaç bileşeni birlikte denetler; uçtan uca test ise tüm uygulamayı bir kullanıcının yapacağı gibi, çoğu zaman gerçek bir tarayıcı üzerinden sürer.

Entegrasyon testlerinde mock kullanılmalı mı?

Entegre edilen parçalar için çoğunlukla hayır, çünkü amaç gerçek etkileşimi denetlemektir. Bir ödeme sağlayıcısı gibi denetlemediğiniz dış servisleri mock'lamak yine de yaygındır.

Daha fazla

Ayarlar