Bagaimana Bevenor Driven Development meningkatkan kejelasan ketika bahasa alami bersifat ambigu?

9

Saat ini saya sedang mengeksplorasi kerangka kerja pengujian BDD seperti mentimun dan saya merasa penasaran ketika orang mengatakan

karena file fitur dalam bahasa alami yang sederhana itu meningkatkan kejelasan dan memberikan visi yang jelas

tetapi, bukankah bahasa alami penyebab sebagian besar masalah yang kita miliki dalam Rekayasa perangkat lunak?

Bahasa alami bersifat rancu dan itulah sebabnya banyak proyek perangkat lunak gagal karena kesalahan interpretasi terhadap persyaratan klien dan pemahaman pengembang. Saya tidak mendapatkan ceruk di sini.

Ya, memecah tes menjadi tindakan kecil yang bisa dilakukan secara masuk akal dan memberikan tingkat kejelasan tertentu tetapi apakah itu meningkatkan produktivitas secara keseluruhan?

PS: Saya bukan ahli dan tidak membuat pendapat di sini. Saya hanya ingin tahu untuk memahami konsepnya.

Raghuram8892
sumber
1
Pertanyaan yang sangat bagus Saya harus mengatakan bahwa saya belum pernah melihat hal-hal seperti apa yang diusulkan mentimun bekerja dalam praktek. Bahasa alami tidak cocok untuk tugas teknis yang tepat, seperti menentukan tes.
Andres F.
Penggunaan bahasa BDD dimaksudkan untuk mencerminkan bahasa yang ada pada domain bisnis, yang seharusnya tidak berbahaya bagi bisnis. Artikel Wikipedia menyatakannya di awal teks.
Martin Spamer

Jawaban:

8

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.

jujur
sumber
ini jawaban yang luar biasa. Saya melakukan sedikit riset tentang ini setelah mengajukan pertanyaan ini dan saya harus setuju dengan sebagian besar poin Anda. Salah satu masalah utama dengan menggunakan alat seperti mentimun atau alat BDD adalah bahwa pengembang tidak memahami ide BDD pada tingkat zen . Inilah artikel yang menarik tentang hal ini oleh Elizabeth Keogh.
Raghuram8892
4

Ketika sesuatu ditulis dalam "bahasa alami" ini dapat berarti sejumlah hal:

  • Ini dalam bahasa Inggris. Karena bahasa Inggris adalah bahasa yang sangat ambigu dan tidak tepat, mode input ini tidak memuaskan dalam konteks pengembangan perangkat lunak.

  • Ini bahasa Inggris, tetapi istilah yang relevan didefinisikan dengan tepat. Bahasa tersebut digunakan dalam dokumen hukum, atau teks matematika.

  • Ini adalah bahasa formal, tetapi bahasa itu dimodelkan sangat erat setelah konvensi bahasa alami. Ini menjelaskan semua bahasa pemrograman, sampai taraf tertentu. Semakin bahasa Inggris-seperti bahasa formal, semakin mudah dipahami untuk pembaca yang tidak terlatih. Contoh penting bahasa pemrograman dengan tujuan ini termasuk COBOL dan SQL: select id, name from persons where age > 18segera jelas. Kerugian dari bahasa-bahasa ini adalah Anda perlu memahami bahasa formal untuk menulis kode kerja. Juga, bahasa-bahasa ini seringkali sangat verbose.

DDD menyarankan bahwa proyek tersebut menggunakan bahasa di mana - mana untuk menggambarkan domain. Ini pada dasarnya adalah kasus 2: mendefinisikan istilah yang relevan sehingga Anda dapat berkomunikasi dengan tepat dalam bahasa alami.

Mentimun itu sendiri adalah kasus 3: bahasa formal yang memiliki niat membaca sangat dekat dengan bahasa Inggris normal. Lebih tepatnya: Mentimun adalah kerangka kerja yang memungkinkan Anda untuk mendefinisikan bahasa formal sederhana yang dapat digunakan untuk mengekspresikan persyaratan / tes. Intinya di sini adalah bahwa dokumen yang sama mewakili persyaratan bahasa alami dan tes yang dapat dieksekusi secara otomatis, sehingga keduanya akan selalu sinkron. Anda dapat membaca skenario mentimun dan memverifikasi bahwa itu mengekspresikan kebutuhan Anda dengan benar tanpa harus memahami bagaimana semua ini bekerja.

Mentimun bekerja dengan cara mencocokkan dokumen dengan potongan bahasa alami yang diketahui. Cuplikan ini harus didefinisikan terlebih dahulu. Untuk menulis skenario dalam Mentimun, Anda perlu mengetahui cuplikan yang tersedia - perangkat lunak tidak akan membaca pikiran Anda. Cuplikan ini juga merupakan sumber masalah yang mungkin terjadi: Ketika Anda menerapkan perilaku cuplikan teks, kode Anda mungkin melakukan sesuatu yang sedikit berbeda dari yang disarankan oleh cuplikan teks. Ini tidak akan menjadi masalah jika cuplikan yang sama digunakan berulang kali. Oleh karena itu mentimun sangat cocok untuk menggambarkan aturan bisnis yang terdiri dari serangkaian kondisi, tindakan, dan hasil yang lebih kecil. Kerangka kerja pengujian lain mungkin lebih baik jika masing-masing cuplikan hanya digunakan sekali atau dua kali, misalnya karena pengaturan untuk setiap kasus uji adalah unik.

amon
sumber
terima kasih atas info terperinci. Saya merasa bahwa mentimun agak di daerah abu-abu antara kasus 2 dan kasus 3. ini tidak seperti SQL di mana Anda tidak dapat benar-benar memiliki semacam "Free Will" dan tetap dengan sintaks formal yang ketat. Sejauh pengetahuan saya, jangan mentimun mengizinkan segala bentuk teks setelah kata kunci "Diberi", "Kapan" untuk skenario? Mungkin sesederhana itu, tetapi saya berasal dari negara yang bukan penduduk asli Inggris dan kemungkinan besar sulit untuk membuat orang memberikan cuplikan yang tepat.
Raghuram8892
1
Ya, Anda dapat meletakkan apa pun yang Anda inginkan setelah Given/ When/ Then, tetapi a) Anda dan tim Anda mendefinisikan dengan tepat apa artinya itu, dan b) Anda mendefinisikan arti dalam pencocokan dalam kode , yaitu bahasa formal.
Jörg W Mittag
0

@ Raghuram8892, teks setelah kata kunci Given / When / Then / And harus cocok dengan "snippet", jika tidak, langkah tersebut gagal sebagai tidak terdefinisi atau "tertunda". Dengan demikian, ia jatuh ke dalam kasus 3.

Mengenai "Bahasa Inggris", Mentimun dan bahasanya, Gherkin dirancang untuk penggunaan internasional. Anda dapat menjalankan perintah, cucumber --i18n helpuntuk melihat daftar bahasa yang saat ini didukung, dan cucumber --i18n $CODEuntuk melihat kata kunci untuk kode bahasa tertentu. Misalnya, cucumber --i18n eoberikan kata kunci untuk Esperanto.

Renyah
sumber