Skip to main content
search

“X-Driven Development” kulağa oldukça havalı geliyor değil mi? Kabul edelim, gerçekten biraz havalı. Peki nedir bu havalı iş?

X-Driven Development birden fazla yöntemi içeren bir kavram. Bu yöntemlerinden en çok bilineni ise herhalde TDD (Test-Driven Development)’dır. Ancak TDD dışında, BDD, DDD, RDD, FDD, ATDD gibi farklı yöntemler de bulunmakta. Örneğin; BDD (Behavior-Driven Development) yazılım davranışlarını kullanıcı seviyesinde modellemeye ve testleri hazırlamaya yaramakta. ATDD ise özetle BDD scriptlerinin, ürün kodu geliştirilmeden önce hazırlanarak koşulmasını söylemekte. Bunlar haricinde DDD Domain-Driven Design, FDD Feature-Driven Development, RDD ise Readme-Driven Design anlamlarına gelmekte.

Tüm bu yöntemlerden en ön plana çıkan ise Test-Driven Development. Bu nedenle ilk etapta TDD’yi doğru anlamak faydalı olur.

TDD Test Driven Development Nedir?

Test-Driven Development’ı doğru olarak kavrayabilmek için ilk etapta bilinmesi gereken, TDD’nin yazılımcılar tarafından, yazdıkları kodlar için geçekleştirilen bir eylem olduğudur. İkincil olarak bilinmesi gereken ise, TDD’nin bir test aktivitesi olmaktan çok, bir geliştirme aktivitesi olduğudur.

TDD Süreci

Peki TDD gerçekleştirilerek yazılım nasıl geliştirilir? Şu şekilde,

  • Yazılacak kodu modelleyen ve kontrol eden unit testler yazılır.
  • Unit testler koşulur ve tümünün fail ettiği görülür (False-Positive’leri ayrıştırmak için)
  • Ürün kodu yazılır ve unit testler çalıştırılır.
  • Tüm unit testlerin geçtiği görülür. Geçmemesi durumunda, geçinceye kadar kod üzerinde düzeltme yapılır.
  • Kod iyileştirmeleri (Refactoring) yapılır ve ardından unit testler tekrar koşulur. Unit testlerin geçmemesi durumunda, refactoring çalışmaları tüm unitler testler geçinceye kadar sürdürülür.

Image, http://luizricardo.org/2014/05/is-tdd-dead/

TDD vs Unit Test

TDD ve Unit Test’i birebir olarak karşılaştırmak çok da doğru değildir. TDD bir yazılım geliştirme aktivitesi iken, Unit Testler’in sürecin (TDD veya TFA) çıktısı olarak değerlendirilebilir.

“Test-Driven Development = Test First Approach + Refactoring”

TDD’yi refactoring olmadan düşünmek yanlış olacaktır. TDD birincil hedef olarak, yazılımcının kodlamaya başlamadan önce tasarıma odaklanmasını sağlayarak, daha yalın, rafine (SOLID Principle) ve en sonunda refactor edilmiş kodlar üretmesini desteklemektedir. Sürecin çıktısı olarak üretilen testler ise ikincil hedef kapsamında regresyon kontrolleri için kullanılabilir.    

“The act of writing a unit test is more an act of design than verification”
– Robert C. Martin

Daha fazlası için https://www.keytorc.com/uluslararasi-kod-kalitesi-ve-kod-analizi-egitimi/

 

Close Menu