Birim Testi nedir?
BİRİM TESTİ , 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. Birim Testi, geliştiriciler tarafından bir uygulamanın geliştirilmesi (kodlama aşaması) sırasında yapılır. Birim Testleri, bir kod bölümünü izole eder ve doğruluğunu onaylar. Bir birim, bireysel bir işlev, yöntem, prosedür, modül veya nesne olabilir.
SDLC, STLC, V Modeli, Birim testi, entegrasyon testinden önce yapılan ilk test seviyesidir. Birim testi, genellikle geliştirici tarafından gerçekleştirilen bir WhiteBox test tekniğidir. Pratik bir dünyada, geliştiricilerin testlere isteksizliği veya zaman sıkıntısı nedeniyle QA mühendisleri aynı zamanda birim testleri de yapar.
Bu eğitimde öğreneceksiniz-
- Neden Birim Testi?
- Birim Testi nasıl yapılır
- Birim Test Teknikleri
- Birim Test Araçları
- Test Güdümlü Geliştirme (TDD) ve Birim Testi
- Birim Test Etme Efsanesi
- Birim Testi Avantajı
- Birim Testi Dezavantajları
- Birim Testi En İyi Uygulamaları
Neden Birim Testi?
Birim Testi önemlidir, çünkü yazılım geliştiricileri bazen minimum birim testi yaparak zamandan tasarruf etmeye çalışırlar 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. Erken geliştirmede uygun birim testi yapılırsa, sonunda zamandan ve paradan tasarruf sağlar.
Yazılım mühendisliğinde birim testi yapmanın temel nedenleri şunlardır:
- Birim testleri, geliştirme döngüsünün başlarında hataları gidermeye ve maliyetleri düşürmeye yardımcı olur.
- Geliştiricilerin test kodu 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. Kodunuzu hem taşıyın ve yeni proje için testler. Testler tekrar çalışana kadar kodu değiştirin.
Birim Testi nasıl yapılır
Amacıyla Unit Test yapmak , geliştiriciler yazılım uygulaması belirli bir işlevi sınamak için bir kod bölümünü yazın. Geliştiriciler ayrıca, daha sıkı bir şekilde test etmek için bu işlevi izole edebilir ve bu, test edilen işlev ile diğer birimler arasındaki gereksiz bağımlılıkları ortaya çıkarır, böylece bağımlılıklar ortadan kaldırılabilir. Geliştiriciler, birim testi için otomatikleştirilmiş test senaryoları geliştirmek için genellikle UnitTest çerçevesini kullanır.
Birim Testi iki türdendir
- Manuel
- Otomatik
Birim testi genellikle otomatiktir ancak yine de manuel olarak gerçekleştirilebilir. Yazılım Mühendisliği birini diğerine tercih etmez ancak otomasyon tercih edilir. Birim testine manuel bir yaklaşım, adım adım bir talimat belgesi kullanabilir.
Otomatik yaklaşım altında-
- Bir geliştirici, yalnızca işlevi test etmek için uygulamada bir kod bölümü yazar. Daha sonra yorum yaparlar ve nihayet uygulama konuşlandırıldığında test kodunu kaldırırlar.
- Bir geliştirici, işlevi daha titiz bir şekilde test etmek için de izole edebilir. Bu, kodun doğal ortamından çok kendi test ortamına kopyalanıp yapıştırılmasını içeren daha kapsamlı bir birim test uygulamasıdır. Kodu izole etmek, test edilen kod ile üründeki diğer birimler veya veri alanları arasındaki gereksiz bağımlılıkları ortaya çıkarmaya yardımcı olur . Bu bağımlılıklar daha sonra ortadan kaldırılabilir.
- Bir kodlayıcı, otomatik test senaryoları geliştirmek için genellikle bir UnitTest Çerçevesi kullanır. Geliştirici, bir otomasyon çerçevesi kullanarak, kodun doğruluğunu onaylamak için ölçütleri teste kodlar. Test olaylarının yürütülmesi sırasında çerçeve, başarısız test olaylarını günlüğe kaydeder. Pek çok çerçeve de özet olarak bu başarısız test durumlarını otomatik olarak işaretleyecek ve raporlayacaktır. Hatanın ciddiyetine bağlı olarak, çerçeve sonraki testleri durdurabilir.
- Birim Testinin iş akışı 1) Test Durumları Oluşturma 2) İnceleme / Yeniden Çalışma 3) Temel 4) Test Durumlarını Yürütme şeklindedir.
Birim Test Teknikleri
Birim Test Teknikleri ağırlıklı testi yürütmek için kullanılan yazılım uygulaması ve Gri kutu testinin işlevsel davranışlarını test içerir giriş ve çıkış, Beyaz kutu testi ile birlikte kullanıcı arayüzünün teste tabi tutulmasını içerir Kara kutu test olan üç bölüme kategorize edilir paketleri, test yöntemleri, test senaryoları ve risk analizi gerçekleştirme.
Birim Testinde kullanılan kod kapsamı teknikleri aşağıda listelenmiştir:
- Bildirim Kapsamı
- Karar Kapsamı
- Şube Kapsamı
- Durum Kapsamı
- Sonlu Durum Makinesi Kapsamı
Daha fazlası için bkz. Https://www.guru99.com/code-coverage.html
Birim Testi Örneği: Sahte Nesneler
Birim testi, 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 Test Araçları
Birim testine yardımcı olmak için birkaç otomatik birim test yazılımı mevcuttur. 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ıdır, bu nedenle 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. Araç aynı zamanda geliştiricilerin, bir sistemin belirli bir şekilde davrandığını iddia etmek için önceden tanımlanmış onaylama yöntemlerini kullanmalarına izin verir.
Bunlar, mevcut birim test araçlarından sadece birkaçıdır. Özellikle C dilleri ve Java için çok daha fazlası vardır, 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 çerçevelerinin kapsamlı kullanımını içerir. Otomatik birim testleri oluşturmak için bir birim testi çerçevesi kullanılır. Birim test çerçeveleri TDD'ye özgü değildir, ancak bunun için çok önemlidir. Aşağıda, TDD'nin birim testi dünyasına getirdiklerinden bazılarına bakıyoruz:
- 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 Test Etme Efsanesi
Efsane: Zaman gerektirir ve ben her zaman fazla planlanırım Kodum çok sağlamdır! 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.
Programcılar, Entegrasyon Testinin tüm hataları yakalayacağını ve birim testini yürütmeyeceğini düşünürler. Ü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ı
- 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ı
- 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 En İyi Uygulamaları
- 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 bir birim Test Senaryosu bulunduğ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.
- "Kodunuz olarak test edin" yaklaşımını benimseyin. Test etmeden ne kadar çok kod yazarsanız, hataları kontrol etmeniz için o kadar çok yol 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. Birim testi her zaman bir düzeyde gereklidir. Bu bir kesinliktir.