Anda benar. BDD tidak menghilangkan masalah dengan ambiguitas bahasa - tidak sama sekali. Seperti yang ditunjukkan oleh orang lain, cuplikan yang diterjemahkan harus disesuaikan dengan definisi yang tepat, tetapi ini juga tidak membahas masalah ambiguitas yang mendasarinya.
Sekarang mengapa BDD sebenarnya bermanfaat meskipun tidak menyelesaikan masalah ini? Ada beberapa alasan dan daftar ini tentu saja tidak lengkap.
Ambiguitas belum terpecahkan
Ini bukan alasan yang mendukung BDD atau menentangnya. Tetapi ketika Anda kontras dengan pendekatan lain seperti cerita atau persyaratan pengguna, maka semua pendekatan pengembangan SW menderita dari ambiguitas bahasa karena mereka semua mulai dengan satu atau lain cara dengan formulasi bahasa alami.
Secara teknis, masalah ambiguitas bahasa telah diselesaikan dengan bahasa artifisial seperti lojban , tetapi sekali lagi, pelanggan dan pengembang Anda kemungkinan besar tidak akan tahu bahasa itu.
Bahasa di mana-mana
BDD berjalan seiring dengan gagasan bahasa yang ada di mana-mana. Mampu menentukan skenario bersama dengan semua pelanggan, penguji dan pengembang, hanya memberi BDD keunggulan atas pendekatan lain.
Pertimbangkan insinyur persyaratan tradisional menuliskan semua persyaratan. Setelah Anda sebagai tester atau pelanggan mendapatkan 300 halaman dokumen yang penuh dengan persyaratan untuk ditinjau, Anda akan memiliki banyak masalah yang lebih mendesak daripada terminologi yang digunakan di sana.
Cerita pengguna melakukan sedikit lebih baik di bagian depan itu, karena mereka juga memasukkan semua pemangku kepentingan dalam kreasi mereka. Dalam hal bahasa di mana-mana, saya tidak akan mengatakan bahwa baik BDD atau cerita pengguna lebih baik - meskipun mereka berbeda pada poin berikutnya secara signifikan.
Testabilitas
Aspek utama dari BDD adalah bahwa spesifikasi Anda sebenarnya dapat dieksekusi (melalui Mentimun atau sejenisnya). Baik persyaratan maupun cerita pengguna tidak menawarkan fitur ini. Bagi saya pribadi, itulah titik penjualan utama untuk BDD.
Bandingkan dengan persyaratan tradisional - kami telah memberi tahu insinyur persyaratan sejak lama bahwa persyaratan mereka harus dapat diuji. Namun, setiap proyek melihat kasus di mana penguji menyadari bahwa mereka tidak tahu cara menguji persyaratan tertentu.
Cerita pengguna, jika dilakukan dengan benar, termasuk penguji di tahap awal penciptaan untuk memastikan hal itu. Sayangnya, ini adalah kasus teori yang bertentangan dengan dunia nyata, di mana saya telah melihat banyak kisah yang belum pernah dilihat oleh penguji sebelumnya.
BDD di sisi lain secara otomatis memberi Anda skenario pengujian yang dapat dieksekusi. Tidak ada alasan dan tidak ada jalan lain (well kecuali Anda benar-benar mengabaikan lapisan otomatisasi dan hanya menulis skenario untuk puisi mewah).
Secara umum, Test First adalah prinsip yang sangat bermanfaat di semua tahap pengembangan perangkat lunak dan BDD adalah penerapannya pada lapisan pengembangan yang paling luar (dibandingkan dengan TDD pada tingkat unit).
Ringkasan
Singkatnya, BDD tidak membuat Anda terhindar dari masalah ambiguitas bahasa alami. Namun, hal ini membantu Anda untuk mengatasi masalah itu melalui dua poin penting: Berfokus pada bahasa di mana-mana untuk mengurangi ambiguitas (itu tidak akan menghilangkan semuanya, tetapi membantu satu ton!) Dan dengan memaksa Anda untuk menulis executable spesifikasi. Poin terakhir membantu untuk mengatasi masalah ambiguitas terutama karena itu adalah titik di mana ambiguitas mulai muncul sebagai masalah sebaliknya.