Behavior Driven Development (BDD) Nedir ?

BDD temelinde iki kısımdan oluşur.İlk kısım BT ve iş birimlerinin yazılımın nasıl davranması gerektiğini belirledikleri süreçtir. Bu süreçte iş paydaşları,geliştiriciler ve developerlar kısa ve verimli toplantılar yaparak sistemin özelliklerini ve davranışını belirlerler. İkinci kısım ise yazılımın istenildiği gibi davrandığını yazılmış otomasyon kodları ile göstermeyi hedefler. Çalıştırılan otomasyon kodları sonrasında hızlı bir şekilde test sonuçları gözlemlenir ve eksikler belirlenerek yine hızlıca aksiyon alınabilir. Şekil 3’de BDD süreçleri detaylı bir şekilde gösterilmiştir.

Adım:

BDD & TDD

Yazılım geliştirme son yıllarda Waterfall’dan Agile metodolojisine geçiş yapmaktadır. Agile ile yazılım geliştirme sürekli değişim içerdiğinden yeni hataların ortaya çıkmasını  önlemek için test yapmak vazgeçilemez hale gelmiştir. Testler bir işin istenildiği gibi olup olmadığının en büyük göstergesidir. Öte yandan iş birimleri(business) ile yapılan testlerde vardır. İş birimleri kendi alışkanlıkları ve talep edilen ürünün işleyişine göre test ederler. Yani kendi davranışsal testlerini yaparlar. Buradan yola çıkarak yeni test yaklaşımları da hayatımıza girmiştir.

Son dönemin popüler test yaklaşımlarından biri olan BDD (Behavior Driven Development) aslında TDD’ ye (Test Driven Development) alternatif olarak çıkmıştır. İki test yaklaşımı da kaliteli ve anlaşılabilir kod üretimini amaçlamaktadır. Fakat TDD yaklaşımının maliyetli oluşu ve birbirinin dilinden anlamayan birimler tarafından kullanılmaması BDD yaklaşımı ortaya çıkarmıştır. BDD yaklaşımı tüm birimler tarafından anlaşılabilen ortak bir dil kullanarak müşteri taleplerinin hızlıca yapılabilmesini ve iletişimin sağlanmasını kolaylaştırmıştır. Şimdi bu yaklaşımları detaylı bir şekilde inceleyelim.

Test Driven Development(TDD) Nedir ?

TDD ile geliştirme yaparken ilk olarak testi yazıyoruz. Hiçbir geliştirme yapmadan test kodlarını çalıştırıyoruz. Doğal olarak testlerin hepsi başarısız oluyor. Daha sonra yazdığımız test kodlarını dikkate alarak kodlarımızı yazıyoruz. Testimizi tekrar çalıştırdığımızda yazılan kodlar testten başarıyla geçmiş oluyor. Eğer kodumuzu ilk önce yazıp testi daha sonra yazarsak testimizde sürekli patlayan yerler olacak. Patlayan yerleri sürekli geri dönüp düzeltmek yerine başta testimizi yazarak geliştirme yaparsak zaman ve insan maliyetimizi azaltmış oluruz.

TDD ile geliştirme yaptığımızda red/green/refactor tasarımı karşımıza gelecektir. Şekil 2 ‘ de ve aşağıda tasarımın adımları gösterilmiştir.

Adım 1 - Yazılacak olan sistemin gereksinimlerini düşünün.

Adım 2 - Test yazın.

Adım 3 - Testi çalıştırın. Kod yazılı olmadığından test başarısız olur.(fail)

Adım 4 - Testi geçmek için kodu yazın.

Adım 5 - Tüm testleri tekrardan çalıştırın. Test başarılı olur.(pass)

Adım 6 - Son aşamada koda tekrar dönerek düzenleme işlemi yapın.(refactor)

Önce test yazmak bizim olası hatalar yapmamızı engeller ve test adımlarını uygulaya uygulaya gittiğimizden büyük kod parçalarını hatasız oluşturmayı sağlar.

Behavior Driven Development(BDD) Nedir ?

BDD temelinde iki kısımdan oluşur. İlk kısım BT ve iş birimlerinin yazılımın nasıl davranması gerektiğini belirledikleri süreçtir. Bu süreçte iş paydaşları,geliştiriciler ve developerlar kısa ve verimli toplantılar yaparak sistemin özelliklerini ve davranışını belirlerler. İkinci kısım ise yazılımın istenildiği gibi davrandığını yazılmış otomasyon kodları ile göstermeyi hedefler. Çalıştırılan otomasyon kodları sonrasında hızlı bir şekilde test sonuçları gözlemlenir ve eksikler belirlenerek yine hızlıca aksiyon alınabilir. Şekil 3’de BDD süreçleri detaylı bir şekilde gösterilmiştir.

BDD ’nin kolay bir yazım yöntemi vardır. “Given-When-Then” olarak üç başlıkta test senaryoları kurulur. Given, belirlenen test senaryosu bu başlıkta yazılır. When, test senaryosunun gerçekleşeceği zamanı anlatılır. Then, belirlenen senaryo ve aksiyon sonrasında uygulamanın nasıl bir sonuç döneceğini anlatır. Örneğin, herhangi bir kullanıcının sisteme giriş yapmak istediğini düşünelim ve sırasıyla BDD adımlarını yazalım.

Given: Kullanıcı şifre alanına hatalı şifre girer.

When: Giriş düğmesine basar.

Then: Kullanıcıya hatalı şifre ile giriş yapmak istediğini belirten hata mesajı gösterilir.