KaderTarlan

BlogCan

TDD Ve BDD Nedir?

TDD ve BDD

Test Driven Development nedir ?
Burada mantık, önce testi yazacaksın sonra testi geçen kodları yazacaksın.
Belki size ters gelebilir ama durum aynen böyle.

• Hiç bir kod yazmadan önce oluşturduğumuz testi çalıştrıyoruz, doğal olarak test adımları gerçekleyemediği için başarısız oluyor.

• Daha sonra bu testi doğru çalıştıracak kod parçasını yazıyoruz.

• İçeriği dolan kodlarla testin çalışacağı temel şekilleniyor. Testimizi şimdi çalıştırdığımızda içeriği dolmuş test parçası amacımızı gerçeklediğinden testimiz çalışmış, yazılan kodlar da testten başarı ile geçmiş oluyor.

Olaya TDD ile baktığımız zaman red/green/refactor tasarımları gelecek gözümüze.

Eğer kodumuzu yazmayı bitirdikten sonra testleri yazmaya başlarsak buradaki patlayacağımızı öğrendik artık. Patlayan yerleri sürekli düzeltmek yerine test formları ile sorumlulukları belirleyip ilerlemek daha mantıklı.

• Fail aldığımız yerde fail yok edecek yeterli bir kodu yazmak işimizi görecek.
• Kodumuz pass döndüğünde herşey yolundadır. • En son aşamada kodumuza tekrar dönüp, tekrarlı yerleri silip kodumuzu düzenleriz (refactoring).

O zaman sıramız söyle olacak önce bir test çalıştıracağız fail dönecek bunu pass yapacak hale getireceğiz sonra refactor edeceğiz.

Ö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ı da hatasız oluşturmayı sağlar.

Behaviour Driven Development nedir ?
Bu yöntem hem yazılımı daha test odaklı yapar hem de developerın yazdığı kodları , işi yaptıran kişinin de anlamasını sağlıyor.
Burada konuşma dili gibi yazdığımız için anlaşılması da kolay oluyor.

• Ben bir [X] olarak
• [Y]‘yi yapmak istiyorum
• Böylece [Z] olur

Burada Y herhangi bir özellik, Z bu özelliğin getirdiği artı, X ise Y'yi uygulayacak kullanıcı veya bir faktördür. Yukarıdaki adımları BDD da yazımı ;

Given
When
Then

–Bir kullanıcı dosya yükler–
• Ben bir kullanıcı olarak
• Dropbox hesabıma dosya yüklemek istiyorum
• Böylece dosyalarımı daha güvenli şekilde saklamış olurum.

Burada senaryomuzun gerçekleşmesi için bir Dropbox hesabımız olmalı ve yüklenecek bir dosyamız olmalı.
Bu senaryomuzu BDD ile given - when - then kullanarak yazacak olursak;

–Bir hesabımız var ve yüklenecek dosyaya sahibiz;

Given var olan bir hesap And yüklenecek dosya

When kullanıcı dosya yüklemek istediği zaman

Then dosyanın dropbox hesabına yüklendiğine emin ol

Gördüğünüz gibi kullanımı oldukça basit , konuşur gibi test adımları oluşturuyoruz. Yapmak istediğimizi ve beklentimizi bu kalıplarda oluşturmuş oluyoruz.