Test Runner
Test çalıştırıcı
- Okunuşu
- test ranır
Kısaca
Test runner, bir projenin otomatik testlerini genellikle tek komutla bulan, çalıştıran ve hangilerinin geçtiğini ya da başarısız olduğunu raporlayan araçtır.
Test runner nedir?
Test runner, otomatik testlerinizi gerçekten çalıştıran programdır. Onu npm test, pytest ya da go test gibi tek bir komutla başlatırsınız; testleri bulur, çalıştırır ve neyin geçtiğine ve neyin başarısız olduğuna dair bir özet yazdırır. Herhangi bir test başarısız olduğunda sıfırdan farklı bir çıkış koduyla (exit code) çıkar; bir CI/CD hattı bozuk bir değişikliği bu sayede durdurması gerektiğini bilir.
Bir runner önce testleri genellikle *.test.js ya da test_*.py gibi dosya adı kalıplarıyla veya koddaki ek açıklamalarla (annotation) keşfeder. Ardından fixture'ları kurar, her testi çoğu zaman birkaç işçi süreç üzerinden paralel olarak çalıştırır, çıktıyı ve zamanlamayı yakalar ve bir rapor üretir: bir konsol özeti ya da CI sistemlerinin gösterebileceği JUnit XML gibi makine tarafından okunabilir bir dosya. Yararlı özellikler arasında dosyalar değiştiğinde testleri yeniden çalıştıran izleme modu (watch mode), ada ya da etikete göre filtreleme, yalnızca başarısız testleri yeniden çalıştırma, takılan testler için zaman aşımları ve birbirine bağımlı testleri ortaya çıkarmak için test sırasını karıştırma bulunur.
Test runner, bir turnuvadaki hakem ve skor tabelası gibidir: maçları kendisi oynamaz, ama her birinin kurallara göre oynanmasını sağlar ve sonuçları kaydeder. Her büyük dil ekosisteminin en az bir tanesi vardır ve bazıları Node.js'teki node --test, Go'daki go test ve Rust'taki cargo test gibi dilin araç zincirine yerleşiktir.
Test runner'lar sıklıkla test çerçeveleri ve assertion kütüphaneleriyle karıştırılır. Çerçeve, describe, test ve fixture hook'ları gibi test yazmak için API'yi sağlar; assertion kütüphanesi expect(x).toBe(y) gibi kontrolleri sağlar; runner ise testleri çalıştırır ve sonuçları raporlar. Pek çok popüler araç üçünü birden barındırır; adların sıklıkla birbirinin yerine kullanılmasının nedeni budur. CI sunucusu ise yine farklıdır: test runner'ı daha büyük bir hattın bir adımı olarak çalıştırır.
Önemli noktalar
- Test runner, otomatik testleri keşfeder, çalıştırır ve raporlar.
- Başarısızlıkta sıfırdan farklı bir çıkış kodu, CI hatlarının bozuk değişiklikleri engellemesini sağlar.
- Yaygın özellikler paralel çalıştırma, izleme modu, filtreleme ve zaman aşımlarıdır.
- Raporlar, JUnit XML gibi insan tarafından okunabilir ya da makine tarafından okunabilir olabilir.
- Çerçeve testlerin nasıl yazılacağını tanımlar; runner onları çalıştırır.
Örnek
# Discover and run all test files with Node.js's built-in runner
node --test
# Run only the tests whose names match a pattern
node --test --test-name-pattern="checkout"
# Rerun affected tests automatically whenever a file changes
node --test --watch
# Python: run tests matching "checkout" and stop at the first failure
pytest -k checkout -x
# 0 means every test passed; anything else means at least one failed
echo $?Sık sorulan sorular
Test runner ile test çerçevesi arasındaki fark nedir?
Test çerçevesi, testleri yazmak ve düzenlemek için fonksiyonlar sağlar; test runner ise bu testleri bulur, çalıştırır ve sonuçları raporlar. Pek çok araç ikisini de içerir, bu yüzden terimler sıklıkla gevşek biçimde kullanılır.
Test runner'lar testleri neden paralel çalıştırır?
Testleri birkaç süreç üzerinde aynı anda çalıştırmak geri bildirim döngüsünü kısaltır; bu büyük takımlar için önemlidir. Yalnızca testler bağımsız olduğunda ve değiştirdikleri verileri paylaşmadıklarında güvenilir biçimde çalışır.
İlgili sayfalar
- Birim TestiTest ve Kalite, s. 4Birim 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.
- Test FixtureTest ve Kalite, s. 29Test fixture, bir testin çalışmadan önce ihtiyaç duyduğu örnek veri ya da yapılandırılmış nesne gibi bilinen durum ile onu kurup temizleyen koddur.
- AssertionTest ve Kalite, s. 2Assertion, kodun o noktasında bir koşulun doğru olması gerektiğini bildiren ve koşul yanlışsa testi ya da programı bir hatayla durduran ifadedir.
- 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.
- Flaky TestTest ve Kalite, s. 8Flaky test, koda hiçbir değişiklik yapılmadan bazen geçen bazen başarısız olan ve sonuçlarına güvenmeyi zorlaştıran otomatik bir testtir.
- 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.
- 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.
- PlaywrightTest ve Kalite, s. 20Playwright, Chromium, Firefox ve WebKit'i tek bir API ile yöneten, Microsoft'un uçtan uca test ve tarayıcı otomasyonu için açık kaynaklı framework'üdür.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin