ใช่ไหม? อาจจะ. ความคิดเห็นของฉันน่าจะเป็นสิ่งที่ทำให้ซอฟท์แวร์ด้านความบันเทิงโดยทั่วไปแย่ลงแม้ว่ามันจะทำงานได้ดีสำหรับไลบรารี่ระดับต่ำ
แก้ไข: นี่คือเหตุผลบางอย่างสำหรับความคิดเห็นของฉัน
Wikipedia กำหนด BDD เป็นเทคนิคที่"ส่งเสริมการทำงานร่วมกันระหว่างผู้พัฒนา QA และผู้ที่ไม่ใช่ด้านเทคนิคหรือผู้ร่วมธุรกิจในโครงการซอฟต์แวร์"สิ่งนี้ฟังดูเหมือนเป็นความคิดที่ไม่ดีเนื่องจากเกมต่างจากซอฟต์แวร์ส่วนใหญ่เนื่องจากไม่ได้ออกแบบมาเป็นเครื่องมือเพื่อตอบสนองความต้องการเฉพาะสำหรับ 'ผู้เข้าร่วมที่ไม่ใช่ด้านเทคนิคหรือธุรกิจ' แต่เป็นงานที่ออกแบบมาเพื่อความบันเทิง มีการเน้นที่ "พฤติกรรมซอฟต์แวร์ที่ต้องการ" แต่เกมไม่ค่อยมี 'พฤติกรรมซอฟต์แวร์ที่ต้องการ' ยกเว้นในระดับเทคนิค มีข้อดีอย่างแน่นอนในการตรวจสอบส่วนของรหัสนั้น แต่ไม่ใช่กับผู้ใช้ปลายทางเพราะพวกเขาจะไม่เห็นมัน
แต่สมมติว่าคุณต้องการทิ้งสิ่งที่ผู้มีส่วนได้ส่วนเสียของมนุษย์และใช้ BDD เพื่อบังคับใช้สัญญาระหว่างโมดูลโค้ดที่แตกต่างกันซึ่งเท่าที่ฉันเห็นจะไม่แตกต่างจากการพัฒนาโดยใช้การทดสอบตามปกติซึ่งฉันคิดว่าไม่ดีเช่นกัน เหมาะกับเกมด้วยเหตุผลดังต่อไปนี้
การทดสอบมีประโยชน์สำหรับการตรวจสอบว่าเหตุการณ์ไม่ต่อเนื่องเกิดขึ้นเมื่อคาดหวัง สิ่งนี้ทำงานได้ดีในการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์เช่น โลกซอฟต์แวร์ส่วนใหญ่ที่มีการดำเนินการจะมีการสร้างเอาต์พุตบางส่วนจากนั้นคุณเพียงตรวจสอบว่าการกระทำและผลลัพธ์ตรงกัน อย่างไรก็ตามซอฟต์แวร์เกมโดยทั่วไปเป็นการจำลองสถานการณ์ที่การกระทำไม่ได้มีผลลัพธ์โดยสิ้นเชิง แต่เป็นการเปลี่ยนแปลงอย่างต่อเนื่องในสถานะโลก หากผู้เล่นที่ซ่อนของฉันส่งเสียงฉันอาจต้องการตรวจสอบว่า AI ตามล่าฉัน ดังนั้นฉันสามารถสร้างการทดสอบเพื่อให้แน่ใจว่า AI อยู่ในสถานะ 'การล่าสัตว์' หลังจากสร้างเสียงรบกวนและนั่นยอดเยี่ยม แต่ฉันจะรู้ได้อย่างไรว่าการล่าสัตว์นั้นใช้งานได้ดี คุณไม่สามารถตรวจสอบได้ทันที - คุณสามารถสังเกตได้ในช่วงเวลาที่กำหนด
นอกจากนี้วิธีการทดสอบครั้งแรกสามารถสร้างความปลอดภัยที่ผิดพลาดและทำให้ผู้คนเชื่อว่าโค้ดดีกว่าที่เป็นจริง
def check_dice_roll_in_range():
d = new Dice()
assert(d.roll() between 1 and 6)
class Dice:
def roll():
return 4
เนื่องจากผลการทดสอบสามารถให้ผลบวกที่ผิดพลาดได้คุณจึงไม่สามารถหลีกเลี่ยงความต้องการพื้นฐานในการตรวจสอบโค้ดได้ แต่ถ้ารหัสตัวเองมีการตรวจสอบอย่างเพียงพอการทดสอบจะมีความสำคัญรอง นี่คือเหตุผลที่ในความคิดของฉันการทดสอบจะใช้ดีที่สุดหลังจากเหตุการณ์เพื่อทดสอบการแก้ไขข้อบกพร่อง
ฉันจะไม่โต้แย้งว่าไม่มีประโยชน์ใด ๆ ในการทดสอบว่าเมื่อวัตถุ X และ Y ทำงานร่วมกันผลลัพธ์ที่คุณได้รับตามที่คาดไว้ ปัญหาคือว่าคุณใช้วิธีที่มีประสิทธิภาพที่สุดในการตรวจสอบนี้ วิธีการอาจรวมถึงการตรวจสอบอย่างเป็นทางการการตรวจสอบรหัสวิธีการทดสอบครั้งแรกวิธีทดสอบสุดท้ายการทดสอบ QA กล่องดำแบบดั้งเดิมหรือเพียงแค่ใช้รหัสตามที่คาดไว้และสังเกตผลลัพธ์ ตัวเลือกสองตัวสุดท้ายมีประสิทธิภาพอย่างน่าประหลาดใจเกือบตลอดเวลาเพราะแม้จะฟังดูเหมือนว่าพวกเขาขาดความเข้มงวด แต่ข้อบกพร่องส่วนใหญ่จะพบในระหว่างการใช้งานทั่วไปและการเข้าใจข้อผิดพลาดในบริบทตามธรรมชาตินั้นบางครั้งก็ง่ายกว่า ควบคุมและใช้ประโยชน์. เหนือสิ่งนี้
ดังนั้นโดยสรุปฉันคิดว่าการพัฒนาด้วยการทดสอบนั้นไม่ใช่ทางเลือกที่ดีสำหรับซอฟต์แวร์การทดสอบเพียงอย่างเดียวนั้นไม่เพียงพอที่จะรับรองคุณภาพของซอฟต์แวร์ เกมนั้นเป็นเกมที่มีการจับคู่ที่ไม่ดีโดยเฉพาะสำหรับกรณีทดสอบอัตโนมัติและเกมนั้นเป็นเกมที่ไม่ดีเป็นพิเศษสำหรับวิธีการพัฒนาที่มุ่งเน้นไปที่ 'คุณค่าทางธุรกิจ' และ 'การทดสอบการยอมรับ'
(หวังว่าจะเป็นคำตอบที่ดีกว่าแม้ว่าคุณจะไม่เห็นด้วยกับคะแนนของฉัน)