Unit Testi nedir?
UNIT TEST(Birim Testi), bir yazılımın ayrı birimlerinin veya bileşenlerinin test edildiği bir yazılım testi türüdür. Amaç, yazılım kodunun her biriminin beklendiği gibi çalıştığını doğrulamaktır. Unit Test, geliştiriciler tarafından bir uygulamanın geliştirilmesi (kodlama aşaması) sırasında yapılır. Unit Testleri bir kod bölümünü izole eder ve doğruluğunu onaylar. Unit, bireysel bir işlev, yöntem, prosedür, modül veya nesne olabilir.
SDLC, STLC, V Modeli, Unit test, entegrasyon testinden önce yapılan ilk test seviyesidir. Birim testi, genellikle geliştirici tarafından gerçekleştirilen bir WhiteBox test tekniğidir. Gerçek dünyada, geliştiricilerin testlere isteksizliği veya zaman sıkıntısı nedeniyle, QA mühendisleri aynı zamanda birim testleri(unit test) de yapar.
Neden Unit Test?
Unit Test(Birim Testi) önemlidir, çünkü yazılım geliştiricileri bazen minimum birim testi yaparak zamandan tasarruf etmeyi denerler ve bu bir efsanedir, çünkü uygun olmayan birim testi, Sistem Testi , Entegrasyon Testi ve hatta uygulama oluşturulduktan sonra Beta Testi sırasında yüksek maliyetli Hata düzeltmesine yol açar. Uygun birim testi yapılırsa, sonunda zamandan ve paradan tasarruf sağlanmış olur.
Birim testi yapmanın temel nedenleri şunlardır:
- Birim testleri(Unit test), geliştirme döngüsünün başlarında hataları gidermeye ve maliyetleri düşürmeye yardımcı olur.
- Geliştiricilerin kod tabanını anlamalarına yardımcı olur ve hızlı bir şekilde değişiklik yapmalarını sağlar
- İyi birim testleri proje dokümantasyonu görevi görür
- Birim testleri, kodun yeniden kullanımına yardımcı olur.
Birim Test Örneği: Sahte Nesneler
Unit test, henüz tam bir uygulamanın parçası olmayan kod bölümlerini test etmek için oluşturulan sahte nesnelere dayanır. Sahte nesneler, programın eksik kısımlarını doldurur.
Örneğin, henüz yaratılmamış değişkenlere veya nesnelere ihtiyaç duyan bir işleve sahip olabilirsiniz. Birim testinde, bunlar yalnızca kodun o bölümünde yapılan birim testi amacıyla oluşturulan sahte nesneler biçiminde hesaba katılacaktır.
Birim Testi Araçları
Birim testine yardımcı olacak birkaç otomatik araç vardır. Aşağıda birkaç örnek vereceğiz:
- Junit : Junit, Java programlama dili için kullanılan ücretsiz bir test aracıdır. Test yöntemini belirlemek için iddialar sağlar. Bu araç önce verileri test eder ve ardından kod parçasına eklenir.
- NUnit : NUnit, tüm .net dilleri için yaygın olarak kullanılan birim testi çerçeve kullanımıdır. Manuel olarak komut dosyası yazılmasına izin veren açık kaynaklı bir araçtır. Paralel olarak çalışabilen veriye dayalı testleri destekler.
- JMockit : JMockit, açık kaynaklı Birim test aracıdır. Çizgi ve yol metriklerine sahip bir kod kapsama aracıdır. Kayıt ve doğrulama sözdizimi ile alay API’sine izin verir. Bu araç, Hat kapsamı, Yol Kapsamı ve Veri Kapsamı sunar.
- EMMA : EMMA, Java dilinde yazılmış kodu analiz etmek ve raporlamak için açık kaynaklı bir araç setidir. Emma, yöntem, çizgi, temel blok gibi kapsama türlerini destekler. Java tabanlı olduğundan harici kitaplık bağımlılıkları yoktur ve kaynak koduna erişebilir.
- PHPUnit : PHPUnit, PHP programcısı için bir birim test aracıdır. Birim adı verilen küçük kod bölümlerini alır ve her birini ayrı ayrı test eder.
Bunlar, mevcut birim test araçlarından sadece birkaçıdır. Özellikle C dilleri ve Java için çok daha fazlası var, ancak kullandığınız dilden bağımsız olarak programlama ihtiyaçlarınız için bir birim test aracı bulacağınızdan emin olabilirsiniz.
Test Güdümlü Geliştirme (TDD) ve Birim Testi
TDD’deki birim testi, test frameworklerinin kapsamlı kullanımını içerir. Otomatik birim testleri oluşturmak için bir birim testi framework kullanılır. Aşağıda, TDD’nin birim testi dünyasına getirdiği kurallar:
- Testler koddan önce yazılır
- Test çerçevelerine büyük ölçüde güvenin
- Uygulamalardaki tüm sınıflar test edilir
- Hızlı ve kolay entegrasyon mümkündür
Birim Testi Efsanesi
Efsane: Kodum çok sağlam! Ayrıca Birim Testi zaman kaybı. Birim testlerine ihtiyacım yok.
Mitler doğaları gereği yanlış varsayımlardır. Bu varsayımlar aşağıdaki gibi bir kısır döngüye yol açar:
Gerçek şu ki, Birim testi, geliştirme hızını artırır.
Bir çok Programcı, Entegrasyon Testinin tüm hataları yakalayacağını ve birim testini gerek kalmayacağını düşünüyor. Üniteler entegre edildikten sonra, test edilen ünitede çok kolay bulunabilen ve düzeltilebilen çok basit hataların izlenmesi ve düzeltilmesi çok uzun zaman alır.
Birim Testi Avantajı Nedir?
- Bir birim tarafından hangi işlevselliğin sağlandığını ve nasıl kullanılacağını öğrenmek isteyen geliştiriciler, birim API’si hakkında temel bir anlayış kazanmak için birim testlerine bakabilirler.
- Birim testi, programcının kodu daha sonraki bir tarihte yeniden düzenlemesine ve modülün hala doğru şekilde çalıştığından emin olmasına izin verir (yani, Regresyon testi). Prosedür, tüm işlevler ve yöntemler için test senaryoları yazmaktır, böylece bir değişiklik bir hataya neden olduğunda, hızlı bir şekilde tanımlanıp düzeltilebilir.
- Birim testinin modüler yapısı nedeniyle, projenin bazı kısımlarını diğerlerinin tamamlanmasını beklemeden test edebiliriz.
Birim Testi Dezavantajları Nedir?
- Birim testinin bir programdaki her hatayı yakalaması beklenemez. En önemsiz programlarda bile tüm yürütme yollarını değerlendirmek mümkün değildir
- Doğası gereği birim testi, bir kod birimine odaklanır. Bu nedenle entegrasyon hatalarını veya geniş sistem düzeyinde hataları yakalayamaz.
Birim testinin diğer test etkinlikleriyle birlikte kullanılması önerilir.
Birim Testi Uygulamaları İçin 6 Önemli Öneri
- Birim Test durumları bağımsız olmalıdır. Gereksinimlerde herhangi bir geliştirme veya değişiklik olması durumunda, birim test durumları etkilenmemelidir.
- Bir seferde yalnızca bir kodu test edin.
- Birim testleriniz için açık ve tutarlı adlandırma kurallarını izleyin
- Herhangi bir modülde kodda bir değişiklik olması durumunda, modül için karşılık gelen birim Test Senaryosu olduğundan ve modülün uygulamayı değiştirmeden önce testleri geçtiğinden emin olun.
- Birim testi sırasında tespit edilen hatalar, SDLC’de bir sonraki aşamaya geçmeden önce düzeltilmelidir.
- ” Test etmeden ne kadar çok kod yazarsanız, hataları kontrol etmeniz için o kadar çok zaman harcamanız gerekir.
Özet
- BİRİM TESTİ, bir yazılımın ayrı birimlerinin veya bileşenlerinin test edildiği bir tür yazılım testi olarak tanımlanır.
- Gördüğünüz gibi, birim testine pek çok şey dahil olabilir. Test edilen uygulamaya ve kullanılan test stratejilerine, araçlarına ve felsefelerine bağlı olarak karmaşık veya oldukça basit olabilir.