Unit Test Başka Hangi Amaçlar İçin Kullanılabilinir?

Hatırlatma: YouTube Kanalıma abone olarak, her hafta eklenen yazılımcılar için programlama ve kariyer video eğitimlerime ulaşabilirsiniz.

Eğer unit testing ile uğraşıyorsanız genel olarak tanımlanan yararları bellidir. Kısaca kodunuzun çalışıp çalışmadığını göstermesinin yanı sıra bakım yaparken herhangi bir şeyi bozup bozmadığınızı bilmenize de yardımcı olur. Ama bu kadar sofistike araçlar başka amaçlar içinde kullanılabilinir.

Küçük Bir Hikaye

Çalıştığım bir şirkette dependency injection kuralları yazıyordum. Eğer Ninject gibi frameworklar kullanıysanız ne demek istediğimi anlamışsınızdır. Ama bilmeyenler için kısaca özetlemek gerekirse: Dependency Injection’da interfaceleri sınıfları bağlamanız gerekmektedir. Bir interface’i dependency olarak sınıfınıza enjekte ettiğinizde en nihayetinde gerçek bir sınıfın alt tip olarak kullanılması lazım. Dolayısıyla bu alt tipi bir yerde bu interface ile eşleştirmeniz gerekmektedir. Bunu yaparken isterseniz bire bir yaparsanız, isterseniz kurallar yazabilirsiniz. Bu kurallar aşağıda ki gibi olabilir mesela:

Unit Test ve Static Code Analyzer

Eğer yukarıda anlatmak istediğim anlaşıldıysa o zaman Unit test yapmanın başka hangi amaçlar içinde kullanılabileceğiniz anlatabilirim. Kurallarımı yazdıktan sonra bir şekilde diğer mühendisler tarafından oluşturulan interface ve sınıfların bu kurallara uyup uymadığını kontrol etmek istiyordum. Bu sayede hiç bir sınıf ile eşleşmeyen yada yanlış eşleşen interface’leri tespit edebilecektim. Yardımıma Unit Test yetişti. Herhalde şimdiye kadar anlaşıldığı üzere unit testler static code analyzer şeklinde de kullanılabilir ve compile time da validate edilen kurallara benzer şekilde hatalar daha production’a çıkmadan bulunmuş olunurlar. Benzer şekilde kodunuzda farklı şeyleri test edebilir ve sadece çalışıp çalışmadığını değil, aynı zamanda kodunuzda belirlemiş olduğunuz kurallara uyulup uyulmadığınıda unit testler yazarak kontrol edebilirsiniz. Bu arada şimdiye kadar unit test dedim ama aslında kastettiğim unit test framework’ları idi. Çünkü static code analyzer şeklinde yazacağınız testler çokta unit test olmayacaklar.

3. Parti Kütüphane Güncellemeleri

Diğer bir kullanımı alanı ise kullanılan üçüncü parti kütüphanelerin güncellenmesini kolaylaştırmak. Çoğu zaman yazılım mühendisleri olarak yeni yazılımları sistemize entegre etmek isteriz. Bunu yapmak içinde haklı sebeplerimiz vardır. Bu sebeplerden belkide en önemlisi yeni versiyonların daha reliable olarak çalışacak şekilde hatalarının düzeltileceği beklentimizdir. Ama tabiki yeni yazılım beraberinde başka sorunlarınıda getirecektir. Bu sorunların en başında ise değişen API’lar ve kod davranışları gelir. Dolayısıyla bir kütüphaneyi update etmek demek ciddi test gerektirmektedir. Bu sıkıntıyı basitleştirmenin en kolay yöntemlerinden bir tanesi unit testler yazarak bu kütüphaneleri beklentilerin içinde tutmaktır. Eğer kütüphanemizi güncellediğimizde testlerimiz çalışmaz hale geliyorsa hem kütüphanenin güvenli bir şekilde güncellenip güncellenemiyeceğini görmüş olacağız, hemde ne gibi değişikler yapılmış bu bilgiye daha hızlı ulaşacağız. Dolayısıyla güncelleme yapmak istediğimizde neler üzerine çalışmamız gerektiğine dair otomatik olarak bir yol haritamız oluşacak.

Özet olarak unit test framework’ları kendi tanımlamalarından ötesinde başka faydalı amaçlar içinde kullanılabilinir. Hatta isterseniz experimental kod yazmak için bile kullanabilirsiniz. Herkese iyi kodlamalar…

Senior Manager in Software Engineering. Former Technical Lead. Author of the book: Hands-on with Go http://amzn.to/2QYFoaV YT: http://youtube.com/c/tarikguney

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store