คุณถูก. BDD ไม่ได้กำจัดปัญหาเกี่ยวกับความคลุมเครือทางภาษา - ไม่ใช่เลย ตามที่คนอื่น ๆ ชี้ให้เห็นตัวอย่างที่ได้รับการแปลจะต้องจับคู่โดยการกำหนดอย่างถูกต้อง แต่สิ่งนี้ไม่ได้แก้ไขปัญหาความกำกวมพื้นฐาน
ทีนี้ทำไม BDD ถึงมีค่าถึงแม้ว่าจะไม่ได้แก้ปัญหานี้ มีสาเหตุบางประการและรายการนี้ไม่สมบูรณ์
ความคลุมเครือยังไม่ได้รับการแก้ไข
นี่ไม่ใช่เหตุผลที่สนับสนุน BDD หรือต่อต้านมัน แต่เมื่อคุณเปรียบเทียบกับแนวทางอื่น ๆ เช่นเรื่องราวของผู้ใช้หรือความต้องการแนวทางการพัฒนา SW ทั้งหมดนั้นประสบกับความคลุมเครือทางภาษาเมื่อพวกเขาเริ่มต้นในทิศทางเดียวหรืออีกวิธีหนึ่งด้วยสูตรภาษาธรรมชาติ
ในทางเทคนิคแล้วปัญหาของความคลุมเครือทางภาษานั้นได้รับการแก้ไขด้วยภาษาที่ประดิษฐ์ขึ้นเช่นlojbanแต่จากนั้นอีกครั้งลูกค้าและนักพัฒนาของคุณจะไม่รู้ภาษานั้น
ภาษาที่แพร่หลาย
BDD ไปด้วยกันกับความคิดของภาษาที่แพร่หลาย ความสามารถในการระบุสถานการณ์ร่วมกับลูกค้าผู้ทดสอบและนักพัฒนาทั้งหมดทำให้ BDD ได้เปรียบเหนือแนวทางอื่น ๆ
พิจารณาวิศวกรข้อกำหนดดั้งเดิมที่เขียนข้อกำหนดทั้งหมดลงไป เมื่อคุณเป็นผู้ทดสอบหรือลูกค้าได้รับเอกสาร 300 หน้าที่เต็มไปด้วยข้อกำหนดในการตรวจสอบคุณจะมีปัญหาเร่งด่วนมากกว่าคำศัพท์ที่ใช้ในนั้น
เรื่องราวของผู้ใช้นั้นทำได้ดีกว่านี้เล็กน้อยเนื่องจากพวกเขายังรวมผู้มีส่วนได้ส่วนเสียทั้งหมดไว้ในการสร้าง ในแง่ของภาษาที่แพร่หลายฉันจะไม่พูดว่า BDD หรือเรื่องราวของผู้ใช้ดีกว่า - แม้ว่าพวกเขาจะแตกต่างกันในประเด็นถัดไปอย่างมีนัยสำคัญ
การตรวจสอบได้
ลักษณะสำคัญของ BDD คือข้อกำหนดของคุณสามารถใช้งานได้จริง (ผ่าน Cucumber หรือสิ่งที่คล้ายกัน) ข้อกำหนดและเรื่องราวของผู้ใช้ไม่มีคุณสมบัตินี้ สำหรับฉันเป็นการส่วนตัวที่เป็นจุดขายหลักสำหรับ BDD
ตรงกันข้ามกับข้อกำหนดแบบดั้งเดิม - เราได้บอกวิศวกรข้อกำหนดสำหรับอายุว่าข้อกำหนดของพวกเขาควรจะสามารถทดสอบได้ กระนั้นทุกโครงการเห็นกรณีที่ผู้ทดสอบเส้นหนึ่งรู้ว่าพวกเขาไม่รู้ว่าจะทดสอบข้อกำหนดที่แน่นอนได้อย่างไร
เรื่องราวของผู้ใช้หากทำถูกต้องให้รวมผู้ทดสอบในขั้นตอนการสร้างช่วงแรกเพื่อให้แน่ใจ น่าเสียดายที่นี่เป็นกรณีของทฤษฎีที่ปะทะกับโลกแห่งความจริงซึ่งฉันได้เห็นเรื่องราวมากมายที่ไม่เคยมีผู้ทดสอบมาก่อน
ในทางกลับกัน BDD จะให้สถานการณ์จำลองการทดสอบที่ปฏิบัติการได้โดยอัตโนมัติ ไม่มีข้อแก้ตัวและไม่มีวิธีแก้ไขปัญหา (ดีเว้นเสียแต่ว่าคุณจะไม่สนใจเลเยอร์ระบบอัตโนมัติทั้งหมดและเพียงแค่เขียนสถานการณ์สำหรับบทกวีแฟนซี)
โดยทั่วไป Test First เป็นหลักการที่ได้รับรางวัลมากในทุกขั้นตอนของการพัฒนาซอฟต์แวร์และ BDD เป็นแอพพลิเคชั่นไปสู่ชั้นนอกสุดของการพัฒนา (เมื่อเทียบกับ f.ex. TDD ในระดับหน่วย)
สรุป
โดยสรุป BDD ไม่ยกระดับคุณจากปัญหาความคลุมเครือภาษาธรรมชาติ อย่างไรก็ตามมันช่วยให้คุณจัดการกับปัญหานั้นผ่านจุดสำคัญสองจุด: การเน้นภาษาที่แพร่หลายเพื่อลดความกำกวม (มันจะไม่กำจัดพวกเขาทั้งหมด แต่มันจะช่วยได้มาก!) และบังคับให้คุณเขียนโปรแกรมปฏิบัติการ รายละเอียด ประเด็นหลังคือการช่วยแก้ไขปัญหาความกำกวมส่วนใหญ่เพราะนั่นคือจุดที่ความคลุมเครือเริ่มปรากฏเป็นปัญหาอย่างอื่น