13 Nisan 2011 Çarşamba

Unit Test nedir?

Unit Test

Unit test yaparken temel amaç yazdığınız kodun her satırının başka bir kod tarafından otomatik olarak test edilmesidir. Burdaki "test" kullanıcı testi değil, fonksiyonunun düzgün çalıştığının test'idir.
Her test diğer testlerden bağımsız olarak çalışmalı ve tüm bu testlerin tek bir sonucu olmalıdır yani TRUE yada FALSE. Unit test kodları içerisinde görsel doğrulama (ekrana bir şey yazma, mesaj gösterme v.s.) gibi işlemler yapmazsınız.
UnitTest kodları yanlızca çalışması beklenen durumlar için değil metodun verdiği hataları da test eder. Yani müşteri numarasını - değerde verdiğinizde fonksiyonun hata veriyor olmasını beklersiniz.
UnitTest ile pratikde çıkan sorun genelde işler acil olduğu için bu test kodları sonraya bırakılır. bunu yapmayın! İşiniz ne kadar acil olursa olsun test kodlarını yazmadığınız her metod ileride harcadığınız zamanı tekrar tekrar uzatacaktır.

Code Coverage

Unit test sonuçlarına bakarken kalan açık kalabilecek tek nokta yazdığınız kodun ne kadarının test edildiğini bilmektir. Bunu analiz edebilmek içinde coverage tool'larını kullanabilirsiniz.
Coverage tool'ları unit test kodlarını simüle ederek asıl kod üzerindeki çalıştırılan satırların analizini çıkarırlar. %80 civarındaki bir coverage toplamı genel olarak kabul edilebilir orandadır.

Mock Objects

Unit test yaparken temel amaç yazdığınız tek bir metod'u denemektir. Karmaşık sistemlerde test yaparken tüm uygulamayı çalışır halde tutmak zor olacaktır, bunun yerine sadece gereken ortamı simüle edecek kodlar yazmanız gerekebilir.
Örneğin aslında ldap'a bağlanan Logon() metodunun çağırdığı fonksiyonlar yerine sanki ldap gibi davranan ama fonksiyonel bir iş yapmayan objeler geliştirebilirsiniz. Burda test edilmesi gereken active directory değil yazdığınız logon metodudur.
Bu tür fonksiyon yada class'lara mock objects deniyor. Genelde mock object içermeyen bir unit test fazla fonksiyonel olmayacaktır.

Hiç yorum yok:

Yorum Gönder