Unit Test Nedir?

Şeyma Çınar
DigiGeek
Published in
3 min readOct 1, 2021

Unit test, en basit şekilde, bir yazılımdaki en küçük birimin test edilmesidir. Bu en küçük birim genellikle bir metod olurken bazen de bir metodun içindeki bir kod parçası olabilir. Unit test, bu en küçük birimin diğer birimlerden bağımsız olarak doğru bir şekilde çalışıp çalışmadığını kontrol eder. Unit test yazılım testinin ilk aşamasıdır ve genellikle developerlar tarafından yazılır. Unit testin doğru çalışması programın tamamının doğru çalışacağı anlamına gelmez. Çünkü unit test, test ettiği birimi-metodu diğer metodlardan bağımsız bir şekilde sadece kendi içinde test eder ve sadece test ettiği metodun sorunsuz bir şekilde çalıştığını gösterir.

Unit Test Yazmanın Avantajları

· Unit testi kodumuzu yazmadan önce yazabiliriz. Böylelikle daha temiz ve kaliteli kod yazmamızı sağlar.

· Unit test yazmak bizi test edilmesi daha kolay, daha küçük sınıflar ve fonksiyonlar yazmaya teşvik edecektir. Çünkü karmaşık ve komplike sınıf ve fonksiyonların testlerinin yazılması da maliyetli ve karmaşık olacaktır. Bu da kodumuzun daha kaliteli olmasını sağlar.

· Kodlama sürecini çevik bir hale getirir. Programda değişiklik yapmamızı kolaylaştırır ve güvenli bir şekilde kodu yeniden düzenlememizi sağlar.

· Kodda bir değişiklik yaptığımızda unit test ile çok daha hızlı ve basit bir şekilde hata tespiti yapabiliriz. Böylelikle hatanın çözülmesi süreci de hızlanır.

· Unit test kodu daha iyi anlamamızı sağlar. Karışık algoritmalar içeren fonksiyonları unit testlerini okuyarak daha kolay anlayabiliriz. Unit testi okumak test edilen fonksiyonun uç noktalarını örnekler ile görmemizi sağlar.

· Unit test ayrıca önemli bir Sürekli Entegrasyon (Continuous Integration — CI) adımıdır. Sürekli entegrasyon, yazılımdaki her bir değişiklikte sistemin build edilerek herhangi bir şeyin bozulup bozulmadığını kontrol eden bir işlemdir. Unit test olan projelerde CI işlemi projenin build olabildiğini, compiler hatası olmadığını göstermenin yanı sıra derleme sonrasında test kodu otomatik olarak çalışacağından var olan fonksiyonalitenin bozulmadığını da gösterir.

Şekil 1: Unit Test Yaşam Döngüsü

Birlikte Basit Bir Unit Test Yazalım

Öncelikle test etmek istediğimiz Unit class’ını oluşturalım ve toplama işlemi yapan basit bir fonksiyon yazalım.

Şekil 2: Test edilecek sınıf ve fonksiyon

Bu sınıfı test etmek için sınıftaki her fonksiyonu test eden unit testleri yazmamız gerekmektedir. Sınıfımızda tek bir fonksiyon olduğu için sadece summation() fonksiyonu için bir unit test yazacağız.

Genellikle her bir unit test sınıfın yalnızca bir fonksiyonunu test eder. ancak bazı durumlarda bir testin birden fazla fonksiyonu test etmesi de mümkündür. Ya da büyük bir fonksiyonu test edeceksek birden fazla unit test de yazabiliriz.

Şekil 3: Test sınıfı

testSummation() fonksiyonunun içinde new’lenerek bir Unit örneği oluşturulur ve summation() fonksiyonu iki girdi ile çağrılır.

Son olarak, assertEquals() fonksiyonu çağrılır. Asıl testi yapan bu fonksiyondur. Bu fonksiyon ile beklenen değer ile summation() fonksiyonunun döndürdüğü değeri karşılaştırırız. Eğer iki değer eşit ise hiçbir şey olmaz, test başarılı olarak tamamlanır. İki değer eşit değil ise exception verir yani hata fırlatır ve test çalışmayı durdurur.

Şekil 4: Başarılı test sonucu

Test classımızı çalıştırarak UnitTest isimli test sınıfımızın tek metodu olan test() metodunun başarılı bir şekilde çalıştığını görebiliriz.

Bu yazıda genel olarak Unit Testten bahsettik ve çok basit bir JUnit örneği üzerinden konuşarak konuya kısa bir giriş yaptık. İlerleyen yazılarımda JUnit hakkında daha detaylı bilgiler vermeyi hedefliyorum.

Kaynakça

--

--