Test-driven development Test-driven development
- Test-driven development (TDD) เป็นแนวทางในการพัฒนาโปรแกรมซึ่งคุณจะทำการทดสอบและการพัฒนาโค้ดควบคู่หรือสลับกันไป
- Test จะถูกเขียนขึ้นก่อนการเขียน code และ ‘passing' การทดสอบจะเป็นตัวขับเคลื่อนที่สำคัญในการพัฒนา
- เราพัฒนา code ทีละน้อยพร้อมกับการ test สำหรับแต่ละ increment
- ไม่ย้ายไปยัง increment ถัดไปจนกว่า code ที่ได้พัฒนาจะผ่านการ test
- TDD ถูกนำมาใช้เป็นส่วนหนึ่งของวิธีการแบบ agile เช่น Extreme Programming (XP)
- อย่างไรก็ตามยังสามารถนำมาใช้ในกระบวนการพัฒนาแบบ plan-driven Test-driven development TDD process activities
- เริ่มต้นด้วยการระบุ increment ฟังก์ชันการทำงานที่จำเป็น
- โดยปกติแล้วควรมีขนาดเล็กและสามารถใช้งานได้ในไม่กี่บรรทัด
- เขียนการทดสอบสำหรับฟังก์ชันนี้และให้การทดสอบนี้เป็นแบบอัตโนมัติ
- เรียกใช้การทดสอบพร้อมกับการทดสอบอื่น ๆ ทั้งหมดที่ได้รับการดำเนินการ
- ในตอนแรกเรายังไม่ได้ implementation ดังนั้นการทดสอบใหม่จะล้มเหลว
- Implement ฟังก์ชันการทำงานและเรียกใช้การทดสอบอีกครั้ง
- เมื่อการทดสอบทั้งหมดทำงานได้สำเร็จ เราจะขยับไปยัง increment ต่อไปเพื่อ implement ฟังก์ชันต่อไป Benefits of test-driven development
- ครอบคลุมโค้ด (Code coverage)
- ทุกส่วนของโค้ดที่เขียนมีการทดสอบที่เกี่ยวข้องอย่างน้อยหนึ่งรายการ ดังนั้นโค้ดทั้งหมดจึงมีการทดสอบอย่างน้อยหนึ่งรายการ
- การทดสอบการถดถอย (Regression testing)
- มีการพัฒนาชุดทดสอบการถดถอยแบบทวีคูณขึ้นเมื่อมีการพัฒนาโปรแกรม
- การแก้จุดบกพร่องได้ง่าย (Simplified debugging)
- เมื่อการทดสอบล้มเหลวจะรู้ได้อย่างชัดเจนว่าปัญหาอยู่ที่ใด รหัสที่เขียนใหม่ต้องได้รับการตรวจสอบและแก้ไข
- เอกสารระบบ (System documentation)
- การทดสอบตัวเองเป็นรูปแบบของเอกสารอธิบายถึงสิ่งที่โค้ดควรทำ Regression testing
- การทดสอบการถดถอย (Regression testing) คือการทดสอบระบบเพื่อตรวจสอบว่าการเปลี่ยนแปลงไม่ได้ ‘broken’ code ก่อนหน้านี้
- ในขั้นตอนการทดสอบด้วยคน การทดสอบการถดถอยมักมีราคาแพง
- แต่ด้วยการทดสอบแบบอัตโนมัติ จะทำได้ง่ายและตรงไปตรงมา
- การทดสอบทั้งหมดจะถูกรันใหม่ทุกครั้งที่มีการเปลี่ยนแปลงโปรแกรม
- การทดสอบต้องทำงานได้ 'successfully' ก่อนที่จะมีการ commit code