Test-Driven Development เป็นเรื่องเกี่ยวกับการเขียนการทดสอบเพื่อกำหนดคุณสมบัติของโปรแกรม
คุณไม่ได้เขียนการทดสอบเพื่อกำหนดสเปคคำอธิบายการทดสอบเรื่องราวของผู้ใช้และคำอธิบายคุณลักษณะนั้นเป็นข้อมูลจำเพาะในแง่ของ 'ต้นไม้ที่ตายแล้ว'
หากต้องการตรวจสอบกระบวนการ TDD โดยย่อคือ:
- กำหนดโครงการในแง่ของคุณสมบัติ
- อธิบายถึงผู้มีส่วนได้เสียพฤติกรรมและเป้าหมายของแต่ละฟีเจอร์โดยใช้เรื่องราวของผู้ใช้
- ระบุ givens ที่คาดไว้การเรียกเหตุการณ์ / เงื่อนไขและพฤติกรรม / ผลลัพธ์ที่เกี่ยวข้องกับเรื่องราวของผู้ใช้โดยใช้คำอธิบายการทดสอบ [และสิ่งนี้จะทำให้ 'ข้อมูลจำเพาะ' เสร็จสมบูรณ์]
- เลือกชุดคุณสมบัติสำหรับการวนซ้ำแต่ละครั้ง การวนซ้ำควรสั้น [ฉันไม่ได้ทำตามขั้นตอนการวางแผนและการประมาณค่าสำหรับความกะทัดรัด]
- โค้ดการทดสอบสำหรับคุณสมบัติ (จะล้มเหลว แต่คุณต้องทำการตัดสินใจ API เพื่อให้โค้ดทดสอบ)
- ใช้คุณสมบัติเพียงพอเพื่อให้การทดสอบผ่านไป
- refactor รหัสถ้าจำเป็น
- ทำซ้ำกับการทดสอบถัดไปจนกว่าคุณสมบัติจะเสร็จสมบูรณ์
- ทำซ้ำด้วยคุณสมบัติถัดไปจนกว่าการวนซ้ำจะเสร็จสมบูรณ์
- ทำซ้ำกับการทำซ้ำครั้งถัดไปจนกว่าโครงการจะเสร็จสมบูรณ์
การออกแบบสถาปัตยกรรมเอกสารประกอบและอื่น ๆ ที่คุณเลือกทำไม่ได้เป็นส่วนหนึ่งของ TDD มี 'แนวปฏิบัติที่ดีที่สุด' เชิงปฏิบัติที่คุณสามารถอ่านได้ แต่โปรดจำไว้ว่าสิ่งเหล่านั้นเป็นแนวปฏิบัติที่ 'ดีที่สุด' ในการประชุมเชิงปฏิบัติการของคนอื่นไม่ใช่ของคุณ
โปรดทราบว่าจุดนี้มีไว้สำหรับลูกค้าและผู้พัฒนาที่จะมาพร้อมคุณสมบัติและเขียนเรื่องราวและคำอธิบายการทดสอบร่วมกันเพื่อความเข้าใจร่วมกัน
ดังนั้นเมื่อพ้นไปแล้วคำถามเดิมก็คือ:
บทบาทของสถาปนิกซอฟต์แวร์ใน TDD คืออะไร?
และคำตอบสั้น ๆ คือ:
เช่นเดียวกับที่เคยเป็นเช่นเดียวกับที่เคยเป็น - David Byrne
แก้ไข: คำตอบที่ยาวคือ: สถาปนิกมีบทบาทวิสัยทัศน์ / ผู้ตรวจสอบ / ระคายเคือง / สนับสนุน / หนุนหลังในระหว่างกระบวนการทั้งหมดตามปกติตามความจำเป็น
แก้ไข 2: ขอโทษฉันพลาดจุดของคำถามย่อย! ทุกคนมีหน้าที่รับผิดชอบในการเขียนข้อกำหนด; ทั้งหมดของนักพัฒนารวมทั้งสถาปนิกถ้า / เมื่อเหมาะสมบวกลูกค้า นักพัฒนายังเขียนรหัสการทดสอบ