BDD, TDD döngüsü etrafına bir döngü ekler.
Böylece bir davranışla başlıyorsunuz ve bunun testlerinizi yapmasına izin veriyorsunuz, ardından testlerin gelişimi geliştirmesine izin veriyorsunuz. İdeal olarak, BDD bir tür kabul testi ile yürütülür, ancak bu% 100 gerekli değildir. Beklenen davranışı tanımladığınız sürece, sorun değil.
Öyleyse, bir Giriş Sayfası yazdığınızı varsayalım.
Mutlu yolla başla:
Given that I am on the login page
When I enter valid details
Then I should be logged into the site
And shown my default page
Verilen ve Ne Zaman Ve Sonra O Zaman Ve Sözdizimi davranış odaklı gelişimde yaygındır. Bunun avantajlarından biri, geliştirici olmayanlar tarafından okunması (ve eğitimi ile yazılmış olması) - yani, paydaşlarınız bir görevin başarılı bir şekilde tamamlanması için belirlediğiniz davranışların listesini görebilir ve görüp görmediğini görebilir. Eksik bir ürün piyasaya sürülmeden çok önce beklentileriyle eşleşir.
Yukarıdakilere çok benzeyen Gherkin diye bilinen ve bu davranışlardaki cümlelerin arkasına test kodu yazmanıza izin veren bir betik dili vardır. Her zamanki gelişme çerçeveniz için Gherkin merkezli bir tercüman aramalısınız. Bu, bu cevabın kapsamı dışında.
Neyse, davranışa geri dönelim. Mevcut uygulamanız henüz bunu yapmıyor (öyleyse neden birisi değişiklik istiyor?), Bu nedenle bir test çalıştırıcısı kullanıyorsanız veya yalnızca manuel olarak test ediyorsanız bu testi geçemezsiniz.
Şimdi bu işlevselliği sağlamak için TDD döngüsüne geçme zamanı.
BDD yazıyor olsanız da yazmasanız da, testleriniz ortak bir sözdiziminde adlandırılmalıdır. En yaygın olanlarından biri, tanımladığınız "gerekir" sözdizimidir.
Bir test yazın: ShouldAcceptValidDetails. Ondan memnun kalana kadar Kırmızı-Yeşil-Refaktör döngüsünden geçin. Şimdi davranış testini geçiyor muyuz? Değilse, başka bir test yazın: ShouldRedirectToUserDefaultPage. Kırmızı-Yeşil-Refactor mutlu olana kadar. Durulayın, yıkayın, davranışta belirtilen kriterleri yerine getirene kadar tekrarlayın.
Ve sonra bir sonraki davranışa geçiyoruz.
Given that I am on the login page
When I enter an incorrect password
Then I should be returned to the login page
And shown the error "Incorrect Password"
Şimdi, önceki davranışınızı iletmek için bunu önemsememeliydiniz. Bu testte bu noktada başarısız olmalısınız. Bu yüzden TDD döngüsüne geri bırakın.
Ve böylece sayfanızı alana kadar.
Bir Ruby geliştiricisi olmasanız bile BDD ve TDD hakkında daha fazla bilgi edinmek için Rspec Kitabını şiddetle tavsiye edin.