BDD menambahkan siklus di sekitar siklus TDD.
Jadi, Anda mulai dengan perilaku dan membiarkan hal itu mendorong tes Anda, kemudian membiarkan tes mendorong pengembangan. Idealnya, BDD didorong oleh semacam tes penerimaan, tetapi itu tidak 100% diperlukan. Selama Anda memiliki perilaku yang diharapkan, Anda baik-baik saja.
Jadi, katakanlah Anda sedang menulis Halaman Masuk.
Mulai dengan jalan bahagia:
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
Sintaks yang diberikan-dan-kapan-kemudian-kemudian-dan umum dalam pengembangan perilaku-didorong. Salah satu keuntungannya adalah dapat dibaca (dan, dengan pelatihan, tertulis) oleh non-pengembang - yaitu, pemangku kepentingan Anda dapat melihat daftar perilaku yang telah Anda tetapkan untuk menyelesaikan tugas dengan sukses dan melihat apakah itu sesuai dengan harapan mereka jauh sebelum Anda merilis produk yang tidak lengkap.
Ada bahasa scripting, yang dikenal sebagai Gherkin, yang sangat mirip dengan di atas dan memungkinkan Anda untuk menulis kode uji di belakang klausa dalam perilaku ini. Anda harus mencari penerjemah berbasis Gherkin untuk kerangka kerja pengembangan Anda yang biasa. Itu di luar cakupan jawaban ini.
Pokoknya, kembali ke perilaku. Aplikasi Anda saat ini belum melakukan ini (jika itu mengapa seseorang meminta perubahan?), Jadi Anda gagal dalam tes ini, apakah Anda menggunakan pelari ujian atau hanya menguji secara manual.
Jadi sekarang saatnya untuk beralih ke siklus TDD untuk menyediakan fungsionalitas itu.
Apakah Anda sedang menulis BDD atau tidak, tes Anda harus dinamai dengan sintaksis umum. Salah satu yang paling umum adalah sintaks "harus" yang Anda gambarkan.
Tulis tes: ShouldAcceptValidDetails. Lewati siklus Red-Green-Refactor sampai Anda puas. Apakah sekarang kita lulus tes perilaku? Jika tidak, tulis tes lain: ShouldRedirectToUserDefaultPage. Merah-Hijau-Refactor sampai Anda bahagia. Cuci, bilas, ulangi sampai Anda memenuhi kriteria yang ditetapkan dalam perilaku.
Dan kemudian kita beralih ke perilaku selanjutnya.
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"
Sekarang Anda seharusnya tidak mendahului ini untuk melewati perilaku Anda sebelumnya. Anda harus gagal dalam tes ini pada saat ini. Jadi jatuhkan kembali ke siklus TDD Anda.
Dan seterusnya sampai Anda memiliki halaman Anda.
Sangat merekomendasikan The Rspec Book untuk mempelajari lebih lanjut tentang BDD dan TDD, bahkan jika Anda bukan pengembang Ruby.