Birim testi nedir?

Birim testi, kodun en küçük işlevsel birimini test ettiğiniz süreçtir. Yazılım testi, kod kalitesinin sağlanmasına yardımcı olur ve yazılım geliştirmenin ayrılmaz bir parçasıdır. Yazılımları küçük, işlevsel birimler olarak yazmak ve ardından her kod birimi için bir birim testi yazmak yazılım geliştirme en iyi uygulamasıdır. Önce birim testlerini kod olarak yazabilirsiniz. Ardından, yazılım kodunda her değişiklik yaptığınızda bu test kodunu otomatik olarak çalıştırın. Bu şekilde, bir test başarısız olursa, kodun hata veya hataya sahip alanını hızlı bir şekilde izole edebilirsiniz. Birim testi modüler düşünme paradigmalarını uygular ve test kapsamını ve kalitesini iyileştirir. Otomatik birim testi, sizin veya geliştiricilerinizin kodlamaya konsantre olmak için daha fazla zamana sahip olmasını sağlar.

Birim testi nedir?

Birim testi, tipik olarak bir işlev veya metod olan daha küçük, izole bir uygulama kodu bloğunun doğruluğunu doğrulayan bir kod bloğudur. Birim test, kod bloğunun geliştirici tarafından belirlenen teorik mantığına uygun olarak beklenildiği gibi çalışıp çalışmadığını kontrol etmek üzere tasarlanmıştır. Birim test, yalnızca girişler aracılığıyla kod bloğu ile etkileşimde bulunabilen ve iddia edilen (doğru veya yanlış) çıktıyla etkileşebilen bir test türüdür. 

Aynı birim kod bloğu aynı zamanda bir dizi birim testi, yani test durumu olarak bilinen testleri de içerebilir. Eksiksiz bir test senaryosu seti, kod bloğunun beklenen davranışının tamamını kapsar, ancak test durumlarının tamamını tanımlamak her zaman gerekli değildir.

Bir kod bloğunun çalışabilmesi için sistemdeki diğer parçaları gerektirdiğinde, bu harici veri ile bir birim test kullanamazsınız. Birim testi izolasyon içinde çalışmalıdır. Kodun işlevselliği için veritabanları, nesneler veya ağ iletişimi gibi diğer sistem verilerine ihtiyaç duyulabilir. Eğer bu durum böyleyse, veri taklitlerini (data stubs) kullanmalısınız. Birim testlerini küçük ve mantıklı olarak basit kod blokları için yazmak en kolay olanıdır.

Birim test stratejileri

Birim testler oluşturmak amacıyla, tüm test durumlarını kapsamak için bazı temel teknikleri takip edebilirsiniz.

Mantık kontrolleri

Sistem, doğru hesaplamaları yapıyor ve verilen doğru ve beklenen girdi ile kod yoluyla doğru yolu takip ediyor mu? Verilen girişlerle kod üzerindeki tüm yollar kapsandı mı?

Sınır kontrolleri

Verilen girdiler için sistem nasıl yanıt verir? Tipik girdilere, sınır durumlarına veya geçersiz girdilere nasıl yanıt verir?

Diyelim ki 3 ile 7 arasında bir tamsayı girdisi bekliyorsunuz. Sistem, tipik bir girdi olarak 5, sınır durumu olarak 3 veya geçersiz bir girdi olarak 9'u kullandığınızda nasıl yanıt verir?

Hata işleme

Girdilerde hatalar olduğunda, sistem nasıl yanıt verir? Kullanıcıdan başka bir girdi istenir mi? Yazılım çöküyor mu?

Nesne tabanlı kontroller

Eğer kodu çalıştırarak kalıcı nesnelerin durumu değişiyorsa, nesne doğru bir şekilde güncelleniyor mu?

Birim testi örneği

İşte Python'dan çok temel bir metod örneği ve ilgili birim test koduna dair bazı test durumları..

Python metodu

def add_two_numbers(x, y):

    return x + y

İlgili birim testleri

def test_add_positives ():

    result = add_two_numbers(5, 40)

    assert result == 45

def test_add_negatives():

    result = add_two_numbers(-4, -50)

    assert result == -54

def test_add_mixed():

    result = add_two_numbers(5, -5)

    assert result == 0  

Birim testinin avantajları nelerdir?

Birim testi, yazılım geliştirme projelerine birçok yönden avantaj sağlar.

Verimli hata keşfi

Bir kod bloğunda herhangi bir girdi, çıktı veya mantık tabanlı hata varsa, birim testleriniz hatalar üretime ulaşmadan önce bunları yakalamanıza yardımcı olur. Kod değiştiğinde, entegrasyon testleri gibi diğer testlerin yanı sıra aynı birim testleri setini çalıştırırsınız ve aynı sonuçları beklersiniz. Testlerin başarısız olması (bozuk testler olarak da adlandırılır) regresyon tabanlı hataları gösterir. 

Birim testleri aynı zamanda kod içindeki hataları daha hızlı bulmaya yardımcı olur. Geliştiricileriniz hata ayıklama faaliyetleri için çok fazla zaman harcamıyor. Kodun tam olarak hangi kısmında hata olduğunu hızlı bir şekilde tespit edebilirler.

Belgeler

Kodun tam olarak ne yapması gerektiğini bilmek için kodu belgelemek önemlidir. Bununla birlikte, birim testleri aynı zamanda bir tür belge işlevi de görür.

Diğer geliştiriciler, kod çalıştırıldığında ne tür davranışlar sergilemesi bekleniyor ise bunu görmek için testleri okur. Bu bilgileri kodu değiştirmek veya yeniden düzenlemek için kullanırlar. Kodu yeniden düzenlemek, onu daha performanslı ve iyi oluşturulmuş hale getirir. Değişikliklerden sonra kodun beklenildiği gibi çalışıp çalışmadığını kontrol etmek için birim testi yeniden çalıştırabilirsiniz.

Geliştiriciler birim testlerini nasıl kullanır?

Geliştiriciler yazılım geliştirme yaşam döngüsünün çeşitli aşamalarında birim testler kullanır. 

Test sürücülü geliştirme

Test Sürücülü Geliştirme (TDD), geliştiricilerin tam kodu oluşturmadan önce bir yazılım parçasının işlevsel gereksinimlerini kontrol etmek için testler oluşturduğu bir yaklaşımdır. Testleri önce yazarak, kod yazma işlemi tamamlandığında ve testler çalıştırıldığında, kodun gereksinimlere anında uygun olup olmadığı doğrulanır.

Bir kod bloğunu tamamladıktan sonra

Bir kod bloğu tamamlandığında ve TDD sayesinde daha önce yazılmamışsa, birim testler geliştirilmelidir. Ardından, sonuçları doğrulamak için hemen birim testlerini çalıştırabilirsiniz. Birim testleri, sistem testleri sırasında diğer yazılım testleri paketinin bir parçası olarak da çalıştırılır. Genellikle tam sistem yazılım testi sırasında çalıştırılan ilk test setidir.

DevOps verimliliği

Yazılım geliştirme uygulamalarında DevOps'un temel aktivitelerinden biri sürekli entegrasyon ve sürekli teslimdir (CI/CD). Koda yapılan herhangi bir değişiklik otomatik olarak daha geniş kod tabanına entegre edilir, otomatik testlerden geçirilir ve ardından testler geçilirse dağıtılır.

Birim testleri, entegrasyon testlerinin yanı sıra test paketinin bir parçasını oluşturur. Zaman içinde yükseltildiği ve değiştirildiği için kod kalitesini sağlamak için CI/CD işlem hattında otomatik olarak çalışırlar.

Birim testi ne zaman daha az fayda sağlar?

Her test durumu, her kod bloğu ve her proje için her zaman birim test gerekmeyebilir. İşte birim testinin potansiyel olarak atlanabileceği bazı örnekler. 

Zaman kısıtlandığında

Üretken birim test çerçevesi kullanılsa bile, yeni birim testler yazmak geliştiricilerinizin önemli bir zamanını alır. Giriş ve çıkış tabanlı birim testleri oluşturmak kolay olmakla birlikte mantık tabanlı kontroller daha zor olabilir.

Geliştiricileriniz birim test yazmaya başladıklarında, aynı zamanda kod bloğunda yeniden düzenleme fırsatları görürler ve bunları tamamlayacakları yerde dikkatleri dağılabilir. Bu, uzatılmış geliştirme süreleri ve bütçe sorunlarına yol açabilir.

UI/UX uygulamaları

Ana sistem mantıktan ziyade görünüm ve his ile ilgilendiğinde, çalıştırılacak çok fazla birim testi olmayabilir. Bu durumlarda birim testten ziyade manuel test gibi diğer test türleri daha iyi bir strateji olabilir.

Geçmişe ait kod tabanları

Mevcut geçmişe ait kodu saran testler yazmak, yazılmış kodun tarzına bağlı olarak neredeyse imkansız olabilir. Çünkü birim testler sahte veri gerektirir, bu nedenle çok sayıda veri ayrıştırma içeren yüksek derecede etkileşimli sistemler için birim testler yazmak da zaman alabilir.

Hızla değişen gereksinimler

Projeye bağlı olarak, yazılım herhangi bir çalışma döngüsünde büyüyebilir, yön değiştirebilir veya tamamen atılan bölümlere sahip olabilir. Eğer gereksinimlerin sık sık değişmesi muhtemelse, her kod bloğu geliştirildiğinde her seferinde birim testler yazmanın çok fazla bir nedeni olmayabilir.

Birim testinin en iyi uygulamaları nelerdir?

Sürecinizden en iyi şekilde yararlanmanız için bazı birim testi en iyi uygulamalarını sunuyoruz.

Bir birim test çerçevesi kullanın

Her bir kod bloğu için açık, tamamen özelleştirilmiş birim testleri yazmak zaman kaybına neden olur. Her popüler programlama dili için otomatik test çerçeveleri vardır.

Örneğin, Python'da birim testi için iki farklı çerçeve olarak pytest ve unittest vardır. Test çerçeveleri, her boyuttaki yazılım geliştirme projelerinde yaygın olarak kullanılmaktadır.

Birim testini otomatikleştirin

Birim testleri, yazılım geliştirme sürecindeki farklı olaylarda tetiklenmelidir. Örneğin, sürüm kontrol yazılımını kullanarak değişiklikleri bir kod dizisine göndermeden önce veya bir yazılım güncellemesini dağıtmadan önce bunları kullanabilirsiniz.

Birim testi, zamanlanmış plana göre ayarlanmış eksiksiz bir proje üzerinde de çalıştırılabilir. Otomatik birim testi, testlerin geliştirme yaşam döngüsü boyunca tüm uygun olaylarda ve durumlarda çalışmasını sağlar.

Bir kez iddia et

Her birim testi için yalnızca bir doğru veya yanlış sonuç olmalıdır. Testinizde yalnızca bir iddia ifadesi olduğundan emin olun. Birden fazla bloktaki başarısız bir iddia ifadesi, hangisinin sorunu yarattığı konusunda kafa karışıklığına neden olabilir.

Birim testini uygulayın

Birim testi, yazılım oluşturmanın önemli bir parçasıdır, ancak birçok proje buna kaynak ayırmaz. Projeler prototip olarak başladığında, küçük topluluk tabanlı çabalar olduğunda veya basitçe hızlı bir şekilde kodlandığında, birim testi zaman kısıtlamaları nedeniyle dışarıda bırakılabilir.

Bununla birlikte, projeleri en başından itibaren standart bir uygulama olarak birim testi ile oluşturduğunuzda, süreci takip etmek ve tekrarlamak çok daha kolay hale gelir.

Birim testi ve diğer test türleri arasındaki fark nedir?

Birim testinin yanı sıra birçok başka yazılım test yöntemi türü vardır. Hepsinin yazılım geliştirme yaşam döngüsünde oynayacak belirli rolleri vardır:

  • Entegrasyon testi, yazılım sisteminin etkileşim için tasarlanan farklı parçalarının bunu doğru bir şekilde yapıp yapmadığını kontrol eder.
  • İşlevsel testler, yazılım sisteminin inşa edilmeden önce belirtilen yazılım gereksinimlerini karşılayıp karşılamadığını kontrol etmektedir.
  • Performans testi, yazılımın hız ve bellek boyutu gibi beklenen performans gereksinimlerine uygun çalışıp çalışmadığını kontrol eder.
  • Kabul testi, yazılımın paydaşlar veya kullanıcı grupları tarafından manuel olarak test edilerek öngördükleri şekilde çalışıp çalışmadığının kontrol edilmesidir.
  • Güvenlik testi, yazılımı bilinen güvenlik açıklarına ve tehditlere karşı kontrol eder. Bu, yazılıma üçüncü taraf giriş noktaları da dahil olmak üzere tehdit yüzeyinin analizini içerir.

Bu test yöntemleri genellikle yazılımı kontrol etmek için özel araçlar ve bağımsız süreçler gerektirir. Bunların birçoğu da temel uygulama işlevselliği geliştirildikten sonra gerçekleştirilir. 

Buna karşılık, birim testleri kod her yazıldığında çalışır. Herhangi bir kod yazılır yazılmaz yazılabilirler ve çalıştırmak için herhangi bir özel araç gerektirmezler. Birim testi, yazılım testinin en temel türlerinden biri olarak kabul edilir.

AWS, birim testi gereksinimlerinize nasıl yardımcı olabilir?

Amazon Web Services (AWS) geliştiricilere çok geniş yelpazede avantajlar sunar. Birim testi ve entegrasyon testleri gibi kod ve test yazılımı geliştirebilir ve çalıştırabilirsiniz. Ayrıca DevOps işlem hatlarını çalıştırabilir ve birçok geliştirme fırsatını takip edebilirsiniz.

AWS geliştirici araçları, çeşitli programlama dilleri ve programlama kullanım örnekleri için entegre geliştirme ortamları (IDE'ler), eklentiler ve SDK'lar sunar. Diğer avantajların yanı sıra, bu araçlar birim testini daha verimli hale getirir.

AWS Fargate, uygulamaları sunucu yönetimi olmadan oluşturmanızı sağlayan, sunucusuz, kullandıkça öde modelindeki bir hesaplama motorudur. Uygulama geliştirmenizi kolaylaştırmak için Fargate'de otomatik birim test yazılımını kolayca çalıştırabilirsiniz. 

Üçüncü taraf birim test yazılımlarını AWS Pazar Yeri'nde de bulabilirsiniz. Yazılımı hızlı bir şekilde ve ihtiyacınız olan kontrollerle uygulayabilirsiniz. AWS Pazar Yeri satıcıları esnek fiyatlandırma seçenekleri sunar, böylece ihtiyaç duyduğunuz şey için ihtiyacınız duyduğunuzda ödeme yapabilirsiniz.

Hemen bir hesap oluşturarak AWS'de birim testini kullanmaya başlayın.

AWS'de Sonraki Adımlar

Ürünle ilgili diğer kaynaklara göz atın
Geliştirici Araçları Hizmetlerine göz atın 
Ücretsiz bir hesap açmak için kaydolun

AWS Ücretsiz Kullanım için anında erişim elde edin.

Kaydolun 
Konsolda oluşturmaya başlayın

AWS Yönetim Konsolu'nda oluşturmaya başlayın.

Oturum açın