TDD

TDD (Test-Driven Development) คือวิธีการพัฒนาซอฟต์แวร์ที่เขียน Test ก่อนเขียนโค้ดจริง โดยวนซ้ำในวงจรสั้น ๆ ได้แก่ Test ล้มเหลว (RED) → การ Implement (GREEN) → การ Refactor (Refactor)
RED → GREEN → Refactor
ขั้นตอนของ TDD นั้นเรียบง่ายมาก
ขั้นแรก ให้เขียน Test เพื่อกำหนดพฤติกรรมที่คาดหวังของฟีเจอร์ที่กำลังจะ Implement ซึ่งแน่นอนว่า Test จะต้องล้มเหลวก่อน (RED) จากนั้นเขียนโค้ดขั้นต่ำที่จำเป็นเพื่อให้ Test ผ่าน (GREEN) และสุดท้ายจัดระเบียบโค้ดโดยไม่เปลี่ยนแปลงพฤติกรรม (Refactor) ทำซ้ำ 3 ขั้นตอนนี้ในรอบสั้น ๆ ประมาณไม่กี่นาทีถึงสิบกว่านาที
Test ในฐานะเครื่องมือออกแบบ
หากมองว่า TDD เป็นเพียง "วิธีการทดสอบ" ก็จะเข้าใจสาระสำคัญผิดไป การเขียน Test ก่อนจะทำให้ Interface ของฟังก์ชัน (Arguments และ Return Value) ถูกกำหนดขึ้นก่อนที่จะเริ่ม Implement จริง เนื่องจากเป็นการออกแบบ API จากมุมมองของผู้เรียกใช้งาน จึงทำให้ Interface ที่ใช้งานยากเกิดขึ้นได้ยาก แรงจูงใจที่ Kent Beck เสนอแนวคิด TDD ก็ไม่ได้มาจากการเพิ่ม Test Coverage แต่มาจากการปรับปรุงคุณภาพของการออกแบบ
การใช้งานร่วมกับ Unit Test
Test ส่วนใหญ่ที่เขียนใน TDD จะเป็น Unit Test อย่างไรก็ตาม TDD คือ Methodology ที่ตอบคำถามว่า "จะเขียน Test เมื่อไหร่" ในขณะที่ Unit Test คือเรื่องของ Scope ที่ตอบคำถามว่า "จะทดสอบอะไร" ภายใน Cycle ของ TDD อาจมีการเขียน Test ที่เทียบเท่า Functional Test ได้ และในทางกลับกัน ก็สามารถเขียน Unit Test โดยไม่ใช้ TDD ก็ได้เช่นกัน
ความสัมพันธ์เชิงเสริมกับ ATDD
หาก ATDD ทำหน้าที่รับประกันความถูกต้องของ Business Requirement จากภายนอก TDD ก็ทำหน้าที่สั่งสมความถูกต้องของ Internal Implementation จากภายใน ในระดับโปรเจกต์โดยรวม โครงสร้างสองชั้นที่เหมาะสมคือการใช้ ATDD เพื่อกำหนด Acceptance Criteria และใช้ TDD เพื่อ Implement ฟังก์ชันแต่ละตัวให้ตรงตามเกณฑ์ดังกล่าว
บทความที่กล่าวถึงคำศัพท์นี้
- Eval-Driven Development (EDD) คืออะไร? กระบวนการพัฒนา AI ที่เน้นการประเมินผลเป็นหลักเรียนรู้วิธีใช้ EDD เพื่อนำตัวชี้วัดมาปรับใช้ตลอดวงจรการทำงานแทนการใช้สัญชาตญาณ พร้อมขั้นตอนการปรับแต่ง Prompt และ Parameter แบบอัตโนมัติ
- การพัฒนาจะเปลี่ยนไปอย่างไรด้วย Claude Mythos และ Fable: จากการตรวจสอบ "การเขียนโค้ดที่ถูกต้อง" สู่ "การทำงานที่ถูกต้อง"Claude Mythos และ Fable 5 จาก Anthropic โดดเด่นด้านงานเอเจนต์ระยะยาว เปลี่ยนการพัฒนาจากการเน้น "โค้ดที่ถูกต้อง" สู่ "ผลลัพธ์ที่ถูกต้อง" พร้อมเจาะลึกการใช้งานร่วมกับ /goal และ Dynamic workflows เพื่อการมอบหมายงานอย่างมีประสิทธิภาพตามข้อมูลทางการ
คำศัพท์ที่เกี่ยวข้อง

การทดสอบ E2E
การทดสอบ E2E (End-to-End Testing) คือวิธีการทดสอบที่จำลองการกระทำของผู้ใช้เป็นจุดเริ่มต้น แล้วส่งผ่า

การทดสอบการยอมรับ
การทดสอบการยอมรับ (Acceptance Test) คือวิธีการทดสอบที่ใช้ตรวจสอบว่าฟีเจอร์ที่พัฒนาขึ้นนั้นตรงตามความ

SSM (AWS Systems Manager)
AWS Systems Manager (SSM) คือ AWS Managed Service ที่ใช้สำหรับบริหารจัดการและดำเนินการ EC2 Instance

ATDD
ATDD (Acceptance Test-Driven Development) คือวิธีการพัฒนาซอฟต์แวร์ที่ทีมงานทั้งหมดร่วมกันกำหนดเกณฑ์ก

