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

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:

  1. Benzer isme sahip sınıfları ve interface’leri otomatik olarak eşleştir.
  2. Şu namespace altında tanımlı şu sınıfları şu interface’ler ile eşleştir.
  3. Yada bu ikisininde aynı anda kullanıldığı kurallar…
  4. Unit Testleri Static Code Analzyer Şeklinde Kullanmak

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…

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.