Ünit test yazma adına aklınızda olan tüm soruların en ince ayrıntısına kadar yanıtını bulacağız bir yazı ile karşınızdayım.

Bu yazı ile sizlere şunları garanti ediyorum

  1. Unit test yazma sürecinin nasıl işlediğini tam anlamıyla kavrayacak
  2. Unit test yazmanın püf noktalarını öğrenecek
  3. Kendi Unit testlerinizi yazmaya başlayacaksınız.

Unit Test Nedir ? Unit Test Neden Yazılır?

Yazılımın her bir biriminin (birim=unit) beklenen şekilde çalıştığını doğrulamak için yazılan testlerdir. Peki nedir bu birim ? Prosedürel programlamada, bir birim bütün bir modül olabilir, ancak genel olarak bir fonksiyondur. Önce test edilebilir en küçük birimler, ardından bunlar arasındaki bileşik davranışlar için testler yazılarak, karmaşık uygulamalar için kapsamlı testler oluşturulabilir. Bir birim küçüktür, bu nedenle test sonuçlarını tasarlamak, yürütmek, kaydetmek ve analiz etmek daha büyük kod parçalarından daha kolaydır. Bir birim testiyle ortaya çıkan kusurların bulunması ve onarılması nispeten kolaydır.

Burada dikkat edilmesi gereken en dip noktadan başlamaktır. Örneğin bir Controller var ve içerisinden bir ve ya bir kaç servis çağrılıyor. Eğer Controller için Unit test yazmaya başlarsanız bir hata alındığında bunun hangi servisin hangi alt görevinde olduğunu bulmakta zorlanabilirsiniz.

Gördüğünüz gibi, entegre modül üzerindeki hatayı bulmak, önce birimleri izole etmek, her birini test etmek, sonra onları entegre etmek ve bütünü test etmekten çok daha karmaşıktır.

Birim testi, yazılım hatalarını erken bulma, değişiklikleri (code refactoring süreçlerini) kolaylaştırma, entegrasyonu basitleştirme, bir dokümantasyon kaynağı sağlama ve hemen şimdi daha ayrıntılı olarak inceleyeceğim diğer pek çok avantaj sağlar.

Kod Kalitesi

Unit test, kodun kalitesini artırır. Entegrasyon testi için kod gönderilmeden önce ortaya çıkabilecek her kusuru bulursunuz. Gerçek kodlamadan önce testler yazmak, istenen iş hakkında daha fazla düşünmenizi sağlar.

Değişiklikleri Kolaylaştırır ve Entegrasyonu Basitleştirir

Unit test, yazılımcının kodu yeniden düzenlemesine veya entegre ettiği peketleri daha yüksek bir versiyona yükseltmesine ve modülün hala doğru çalıştığından emin olmasına olanak tanır. Birim testleri, bir güncelleme paketi ile bozabilecek değişiklikleri tespit eder. Kodun korunmasına ve değiştirilmesine yardımcı olurlar.

Dokümantasyon Sağlar

Unit test, sistemin dokümantasyonunu sağlar. Bir birim tarafından hangi işlevlerin sağlandığını ve nasıl kullanılacağını öğrenmek isteyen geliştiriciler, API hakkında temel bir anlayış elde etmek için birim testlerine bakabilir.

Hata Ayıklama Süreci

Birim testi, hata ayıklama sürecini basitleştirmeye yardımcı olur. Bir test başarısız olursa, yalnızca kodda yapılan en son değişikliklerin gözden geçirilmesi gerekir.

Tasarım

Testi yazmak, önce tasarımınızı ve kodu yazmadan önce neyi başarması gerektiğini düşünmenizi sağlar. Bu sadece odaklanmanızı sağlamakla kalmaz; daha iyi tasarımlar oluşturmanızı sağlar. Bir kod parçasını test etmek, sizi o kodun neden sorumlu olduğunu anlamaya zorlar. Eğer yazacağınız fonksiyonun sorumluluğunu kolayca anlayabiliyorsanız, bu, kodun sorumluluğunun iyi tanımlandığı ve dolayısıyla tutarlı olduğunu gösterir.

Maliyetleri azaltmak

Hatalar erken bulunduğundan birim testi, hata düzeltmelerinin maliyetini düşürmeye yardımcı olur. Geliştirmenin sonraki aşamalarında bulunan bir hatanın maliyetini hayal edin. Tabii ki, daha önce tespit edilen hataların düzeltilmesi daha kolaydır çünkü daha sonra tespit edilen hatalar genellikle birçok commit’in sonucudur ve hangisinin hataya neden olduğunu bulmak zordur.