Skip to content

Latest commit

 

History

History
32 lines (32 loc) · 4.63 KB

11.2. Test-driven development.md

File metadata and controls

32 lines (32 loc) · 4.63 KB

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