Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Test - Unit (Birim) Test Nedir?



  January 19, 2019    Labels:,,,,,,,, 

Unit test yazdığımız yazılım her biriminin ayrı ayrı test edilmesidir. Buradaki birim yazılımdaki en küçük parçaya denir. Nesneye yönelik programlama dünyasında en küçük birim sınıflardır. Sınıflar tek başlarına var olabilen ve belirli işleri yapabilen yapılardır. Nesneye yönelik programlamada unit test ile sınıflarımızın yapmaları gereken işleri doğru yapıp yapamadıklarını test ederiz. Unit testte her birim kendi başına test edilmelidir ve bir birim bir başka birime bağlı olmamalıdır. 

Birim testin ana amacı yazılımdaki hataları bulmak değildir. Zaten test mantığının temelinde test kodunun yazılımdan önce yazılması gerekir. Bunun nedeni yazılımdan ne beklediğimizin, hangi durumlarda nasıl çalışması gerektiğinin önceden belirlenmesi gerektiğidir. Eğer bunlar daha önceden belirlenmemişse o yazılımın sağlıklı bir şekilde geliştirilmesi pek mümkün değildir. İşte bu noktada bu durumlar belirlendiğinde bu durumlara göre test sınıflarınında yazılması gereklidir. Daha sonra yazdığımız kod bu belirlediğimiz durumlarda doğru çalışacak kod olmalıdır.

Test sınıflarının bir diğer önemli özelliği de kodumuzu değiştirmemiz gerektiği durumlarda ortaya çıkar. Günümüzde ihtiyaçlar çok sık değişebiliyor. Kod yazıldıktan sonra veya daha kod yazılırken ihtiyaçlar değişebiliyor. Bu durumlarda kodda yaptığımız değişikliğin kodumuzu nasıl etkileyeceği çok büyük problem oluyor. Ancak elimizde daha önceden yazılmış test sınıfları olduğunda yapılan değişiklik sonrası yazılımı test etmek çok kolay olabiliyor.

Bir birimi test ederken yaşanan en büyük problemlerden biride bağımlılıklardır. Örnek olarak bir sınıfın bir metodu veritabanı işlemi yapabiliyor olabilir veya dış bir servisten veri alabiliyor olabilir. Normalde test ederken bu bağımlılıkları da çalıştırırız. Ancak birim test mantığı böyle değildir. Birim testte, test edilen o birimin kodudur. Bağımlılıkların doğru çalışıp çalışmadığı değildir. Bu nedenle birim testte sadece bağımlılıkların doğru bir şekilde çağırılıp çağırılmadığı test edilir. Bu işlem için yazılmış bir çok mekanizma vardır. 

Test sınıflarımızı yazmak için ortaya çıkmış bir çok framework vardır. Bunlardan bazıları;
  • JUnit
  • MSTest
  • NUnit
  • XUnit
  • MbUnit
Birim test yazarken dikkat edilmesi gerekenler;
  • Her test metodunda sadece bir senaryo test edilmelidir.
  • Test metotlarımızı gerekli ortamın hazırlanması, senaryonun çalıştırılması ve sonuçların kontrolü şeklinde bölümlere ayırabiliriz.
  • Test metotlarımızın isimleri test edilen senaryoyu açıklayacak şekilde olmalıdır. Anlamsız bir isimlendirme yerine uzun bir isimlendirme daha iyidir.
  • Test edilen birim diğer birimlerden tamamen bağımsız olmalıdır.
  • Her test metodu diğer test metotlarından bağımsız çalışabilmelidir.

No comments:

Post a Comment