Di setiap situs web yang Anda baca tentang BDD (Behaviour Driven Development), Anda menemukan contoh yang sangat sederhana yang menunjukkan kepada Anda betapa jelas dan mudahnya mendefinisikan persyaratan Anda. Tetapi mencoba menerapkan proses ini dalam produk besar (bukan contoh kalkulator) menunjukkan kepada saya bahwa segala sesuatu dapat (atau akan didapat) cukup rumit dan tidak dapat dibaca; terutama mengubah permintaan pada titik selanjutnya berarti banyak pekerjaan untuk memperbaiki tes Integrasi untuk ini.
Jadi saya bertanya-tanya, apakah BDD benar-benar layak? Apakah itu memecahkan masalah yang tidak dimiliki teknik lain!
Jawaban:
Saya pikir salah satu sumber terbaik pada BDD adalah Spesifikasi oleh Contoh buku . Ini menceritakan banyak tentang bagaimana mengatur tes BDD dan bagaimana mereka harus ditulis sehingga tidak menyebabkan banyak pengerjaan ulang ketika persyaratan berubah.
Jika segala sesuatunya menjadi rumit atau rumit dalam tes Anda, maka mungkin Anda melakukan sesuatu yang salah. Sama dengan BDD dan TDD. Menulis tes yang bagus itu sulit dan butuh berbulan-bulan untuk mempelajarinya.
sumber
Mungkin membantu untuk menyadari bahwa fokus BDD adalah percakapan . BDD benar-benar alat analisis yang terjadi untuk memberikan beberapa pengujian regresi sebagai produk sampingan yang bagus.
Saya telah menggunakan skenario di semua jenis level dalam percakapan; dari mengidentifikasi pemangku kepentingan yang berbeda untuk melihat apakah rilis kemungkinan akan diterima dengan baik, untuk mengetahui bagaimana sebuah modul atau kelas harus berperilaku .
Ada beberapa petunjuk dan tips yang bisa saya sarankan untuk membuat ini lebih mudah.
Jika Anda belum pernah melakukannya sebelumnya, itu akan berubah.
Apa pun yang baru pada domain, atau bisnis, kemungkinan akan berubah. Anda mungkin menyadari bahwa Anda berada dalam ruang ini jika Anda berbicara melalui skenario, menanyai mereka , dan bisnis berkata, "Oh, saya tidak yakin." Itu pertanda baik untuk berhenti mencoba melakukan BDD dan melakukan sesuatu untuk mendapatkan umpan balik yang lebih cepat, untuk membantu bisnis mengetahui apa yang mereka inginkan. Setelah ide-ide stabil, skenario dapat ditulis dalam retrospeksi.
Semua proyek memiliki beberapa aspek bagi mereka yang baru, atau Anda tidak akan melakukannya.
Jika Anda pernah melakukannya sebelumnya, itu membosankan.
Seperti halnya aspek baru yang membedakan , proyek biasanya memiliki beberapa aspek komoditisasi yang serupa dengan yang sudah dilakukan. Misalnya, jika saya memproduksi ponsel baru, masih perlu melakukan panggilan. "Lakukan panggilan telepon" adalah skenario yang sangat terkenal sehingga kita tidak perlu membicarakannya. Demikian pula, hal-hal seperti "masuk" atau bahkan "pendaftaran pengguna" membosankan.
Jika memungkinkan, gunakan pustaka untuk ini, dan kemudian Anda tidak perlu menulis skenario di sekitar mereka. Juga, melakukan bit lainnya pertama - telah yang sudah-login pengguna dan bekerja keluar apa yang dia ini logging di untuk . Area-area ini tidak mungkin berubah, jadi Anda mungkin bisa lolos dengan pengujian manual.
Jika seseorang pernah melakukannya sebelumnya, berbicara melalui skenario dapat membantu.
Ada sedikit di antara di mana kita memiliki persyaratan khusus domain, hal-hal yang relatif dipahami dengan baik oleh seseorang , dan di mana ketidakpastian sebenarnya sebagian besar berada di sekitar ruang lingkup daripada perilaku aktual sistem.
Berbicara melalui skenario dapat membantu tim pengembang untuk menemukan perilaku, untuk memanfaatkan pengetahuan seorang ahli, dan untuk memastikan bahwa perilaku yang diketahui dan berharga dapat ditangkap.
Ini adalah bagian di mana BDD bekerja paling baik. Kiat saya adalah menulis skenario paling menarik di bagian atas file fitur (atau wiki, jika Anda tidak mengotomatiskan) dan menghapus semua skenario yang digandakan atau mudah disimpulkan sebagai hasilnya.
Jika memungkinkan, gunakan skenario hanya sebagai contoh cara kerja aplikasi . Misalnya, jika Anda ingin menunjukkan cara kerja validasi, perlihatkan beberapa contoh bagaimana aplikasi membantu pengguna mengisi formulir. Periksa validasi dengan ketat menggunakan pengujian unit, yang jauh lebih mudah untuk dipertahankan dan lebih cepat dijalankan.
Bacaan lebih lanjut
Jika Anda tertarik dengan ini, berikut adalah beberapa hal yang saya tulis yang mungkin bisa membantu.
BDD di besar
Cynefin untuk devs , yang masuk ke dalam tiga area ini lebih terinci
Slide tutorial saya , yang semuanya bagus dan beranotasi untuk Anda, dan mencakup seluruh tumpukan juga.
sumber
Kami membangun sebuah proyek (kompleksitas domain ) yang cukup rumit musim gugur lalu dan saya dapat dengan jujur mengatakan meletakkan pekerjaan muka ke dalam BDD menyelamatkan proyek. Saya telah melihat korelasi kuat antara kompleksitas domain dan manfaat BDD.
Biarkan saya menyingkirkan satu hal: menguji aturan bisnis yang rumit itu sulit. Pertanyaannya adalah, apakah Anda ingin mencoba dan mengingat semua skenario gila setiap kali Anda melakukan perubahan, atau apakah Anda ingin jaring pengaman itu memberi tahu Anda ketika Anda telah melanggar spesifikasi. Habiskan waktu di muka dan kerjakan semua skenario, tuliskan, dan akhirnya tulis semua tes untuk mereka.
Dan ketika Anda kembali lagi nanti untuk mencoba memahami sesuatu, memiliki spesifikasi yang dapat diuji itu adalah penyelamat hidup.
sumber
BDD adalah proses pengembangan berdasarkan TDD (Test Driven Development) Berikut adalah beberapa pro dan kontra dari TDD yang diambil dari pengalaman pribadi saya:
Cons:
Saya mengerjakan proyek dengan lebih dari 900.000 baris kode. Dan saya masih mengikuti BDD. Satu hal utama yang perlu Anda pertimbangkan adalah jumlah kesalahan yang mungkin Anda tangkap murni karena kasus uji. Beberapa tahun kemudian, Anda akan disumpah oleh BDD!
sumber