Ana içeriğe geç

Birim Testi

İngilizcesi
Unit Test
Okunuşu
yunit test

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/unit-test

Kısaca

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 nedir?

Birim testi, programın birim adı verilen küçük bir parçasını bilinen girdilerle çağıran ve çıktının beklediğiniz sonuçla eşleştiğini kontrol eden kısa bir kod parçasıdır. Birim genellikle tek bir fonksiyon, metot ya da sınıftır. Sonuç farklıysa test başarısız olur ve size bozulan davranışı tam olarak gösterir.

Birim testlerinin çoğu Arrange, Act, Assert (Hazırla, Çalıştır, Doğrula) desenini izler: girdileri hazırlarsınız, test edilen kodu çağırırsınız, ardından sonucu doğrularsınız (assert). Test çalıştırıcısı (test runner) tüm testleri bulur, çalıştırır ve hangilerinin geçtiğini ya da kaldığını raporlar. Birim testleri veritabanı ve ağ gibi yavaş kaynaklardan, çoğu zaman bunların yerine mock'lar koyarak, uzak durduğu için binlercesi birkaç saniyede çalışabilir.

Birim testlerini, duvarı örmeden önce her tuğlanın çatlak olup olmadığına bakmaya benzetebilirsiniz. Geliştiriciler bunları kendi makinelerinde ve CI/CD hatlarında sürekli çalıştırır; test piramidinin geniş tabanını oluştururlar, üstlerinde ise daha az sayıda entegrasyon testi ve uçtan uca test yer alır.

Birim testleri sıklıkla entegrasyon testleriyle karıştırılır. Birim testi tek bir parçayı yalıtılmış olarak kontrol eder; entegrasyon testi ise birkaç parçanın, örneğin kodunuzun ve gerçek bir veritabanının birlikte doğru çalıştığını kontrol eder. Yalnızca bileşenler etkileşime girdiğinde ortaya çıkan bir hata genellikle birim testlerinden kaçar.

Bir bakışta

Üç adımda bir birim testi: tek ürünlü bir sepet hazırla (arrange), toplamını iste (act) ve toplamın 20 olduğunu doğrula (assert). Sepet tek başına, gerçek veritabanı yerine sahte bir fiyat listesiyle test edilir.ARRANGEconst cart = new Cart(fakePrices)cart.add("book")ACTconst total = cart.total()ASSERTexpect(total).toBe(20)Cart.total()birimsahte fiyat listesigerçek veritabanı yerine✓ geçti · 3 ms
Beklenecek gerçek bir şey olmadığından böyle bir test milisaniyeler içinde çalışır; böylece her değişiklikte yüzlercesi koşabilir.

Önemli noktalar

  • Birim testi, tek bir fonksiyon gibi küçük bir kod parçasını yalıtılmış olarak kontrol eder.
  • Birim testlerinin çoğu Arrange, Act, Assert desenini izler.
  • Birim testleri gerçek veritabanı, ağ ve dosya sisteminden kaçındığı için hızlıdır.
  • Test piramidinin tabanını oluştururlar ve her kod değişikliğinde çalıştırılırlar.

Örnek

Node.js'in yerleşik test çalıştırıcısıyla bir birim testijavascript
import { test } from "node:test";
import assert from "node:assert/strict";

function add(a, b) {
  return a + b;
}

test("add returns the sum of two numbers", () => {
  // Arrange and act: call the unit with known inputs
  const result = add(2, 3);
  // Assert: check the output
  assert.equal(result, 5);
});

Sık sorulan sorular

Birim testi ile entegrasyon testi arasındaki fark nedir?

Birim testi, bir kod parçasını genellikle bağımlılıkları mock'larla değiştirilmiş hâlde yalıtılmış olarak kontrol eder. Entegrasyon testi ise kodunuz ve bir veritabanı gibi birkaç gerçek bileşenin birlikte doğru çalıştığını kontrol eder.

İyi bir birim testi nasıl olur?

İyi bir birim testi hızlıdır, diğer testlerden bağımsızdır, tekrarlanabilirdir ve net bir adla tek bir davranışı kontrol eder. Başarısız olduğunda adı ve mesajı, hata ayıklamaya gerek kalmadan neyin bozulduğunu söylemelidir.

Kaç tane birim testi yazmalıyım?

Sabit bir sayı yoktur. İyi bir kural, genel (public) fonksiyonlarınızın her önemli davranışını; boş girdiler, sınır değerler ve hata yolları gibi uç durumlar dahil test etmektir.

Sık karşılaştırılanlar

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar