Quality Control (Unit Testing – Birim Testi)

Öncelikle Yüksek Lisans öğrencim “Mert Levent”e teşekkürler. Bu bölümde Python ortamında birim testi oluşturmayı göreceğiz.

Unit testing (Birim testi),pyhton kütüphanesi içinde bulunan standart bir test modülüdür. Junit’ten esinlenilmiştir ve diğer dillerdeki test modülleriyle benzer özelliktedir. Geliştirmiş olduğunuz kodu test etmek için yazdığınız koddur ve esas olarak kodun veya fonksiyonun belirli bir biriminin davranışını kontrol eder ve geliştirmeyi yapan geliştirici tarafından yazılır.

Bir test birimi, küçük bir fonksiyona odaklanmalı ve doğru olduğunu kanıtlamalıdır. Birim testleri genellikle yazılım geliştiricileri tarafından yazılır ve çalıştırılır, kodun tasarımını karşıladığından ve amaçlandığı gibi davrandığından emin olunur. Metotların belirli girdiler sağlandığı zaman doğru bir şekilde çalışıp, istediğimiz sonucu üretip üretmediğini kontrol etmektir.

Birim test yazmanın amacı, bizi kaliteli kod yazmaya teşvik etmesidir. Birim test yazmanın birinci kuralı test etmekte olduğumuz sınıfı, bağımlı olduğu diğer bütün bileşenlerden izole etmektir. Birim test yazarken, bağlantılı olduğumuz diğer bütün parçaların sorunsuz biçimde çalıştığını varsayarak yazarız, çünkü odaklandığımız şey sınıfın kendisidir, bağımlı olduğu diğer bileşenler değil. Örnek olarak yaptığımız bir sınıfın Google servisine bağlanıp veri çektiğini düşünelim.Testin amacı Google servisleriyle çalışabildiğini göstermek değildir. Bu sınıfın içindeki parçaların(kodların) sorunsuz bir şekilde çalışabildiğini göstermektir.

Yukarıda 2 tane fonksiyon ve 1 test sınıfı vardır. Fonksiyonların düzgün çalışıp çalışmadığını anlamak için sınıfı içine test fonksiyonları yazılır.

Sonuç hatalı çıksa bile bu fonksiyonun doğru ve düzgün bir şekilde çalıştığını gösterir. Bir yazılım sistemindeki hataları (bug) bulmak birim testler ile mümkün değildir. Çünkü birim testlerin yaptığı iş yazılımın en küçük parçalarını kendi içerisinde test etmektir.

Bir yazılım sistemi, onu oluşturan parçaların toplamından çok daha fazlasıdır. Dolayısıyla bu bütünü test etmek için farklı yöntemler kullanmak gerekir. Birim test yazmanın bir diğer büyük faydası da kodda iyileştirme yaparken ortaya çıkar. Hiçbir kod mükemmel değildir ve iyileştirme her zaman bir ihtiyaçtır. Ancak birçok yazılımcı çalışan sistemi bozmaktan korktuğu için iyileştirme yapmaz. Ancak kapsamlı birim testleriniz varsa, değişiklik yaptığınız sınıfın hala çalışıp çalışmadığını anlamak için birim testlerinizi kullanabilirsiniz.

Birim testin nasıl yazılması gerektiği de çok önemlidir. Doğru yazılmayan birim testler bize hiçbir şey kazandırmayacağı gibi en ufak değişiklikte hatalar vermeye başlayıp başımızı ağrıtır. Üstüne bir de testlere bakım yapmakla uğraşmak zorunda kalacağımız için de fayda sağlamanın aksine zararlı olabilir.