Birim Testi
- İngilizcesi
- Unit Test
- Okunuşu
- yunit test
Günlük kullanımda iki ad da yaygın.
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
Ö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
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
- Entegrasyon TestiTest ve Kalite, s. 7Entegrasyon 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.
- Test Odaklı GeliştirmeTest ve Kalite, s. 31Test odaklı geliştirme, önce başarısız bir test yazdığınız, sonra onu geçirecek kadar kod yazıp ardından tasarımı temizlediğiniz bir kodlama pratiğidir.
- MockingTest ve Kalite, s. 16Mocking, kodu yalıtılmış biçimde test etmek için veritabanı ya da API gibi gerçek bir bağımlılığı kontrol ettiğiniz bir sahteyle değiştiren test tekniğidir.
- Test KapsamıTest ve Kalite, s. 30Test kapsamı, otomatik testler çalışırken bir programın kaynak kodunun ne kadarının yürütüldüğünü ölçen ve genellikle yüzde olarak gösterilen bir metriktir.
- FonksiyonProgramlamanın Temelleri, s. 20Fonksiyon, belirli bir işi yapan, isteğe bağlı olarak parametre denen girdiler alıp sonuç döndürebilen, adlandırılmış ve yeniden kullanılabilir kod bloğudur.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- JestTest ve Kalite, s. 10Jest; test çalıştırıcıyı, doğrulamaları, mock'lamayı, snapshot'ları ve kod kapsamını az kurulumla tek pakette sunan popüler JavaScript test framework'üdür.
- Test CaseTest ve Kalite, s. 28Test case, belirli bir davranışın kontrolüdür: başlangıç koşulları, girdi ya da adımlar ve yazılımın doğru davranıp davranmadığını gösteren beklenen sonuç.
- Beyaz Kutu TestiTest ve Kalite, s. 3Beyaz kutu testi, testleri kodun iç yapısına dair bilgiyle tasarlar; böylece kodun ifadeleri, dalları ve yolları doğrudan çalıştırılıp kontrol edilir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin