เวิร์กโฟลว์การพัฒนา

เขียนโค้ดที่สะอาดขึ้นด้วย TDD ที่ขับเคลื่อนโดย Claude

Red, green, refactor โดยให้ AI เขียนเทสต์

Claude Code เก่งเรื่อง TDD เป็นพิเศษ คุณอธิบายพฤติกรรมที่ต้องการ มันจะเขียนเทสต์ที่ fail ก่อน แล้วจึง implement โค้ดที่ทำให้มันผ่าน สิ่งนี้กลับด้านจุดเจ็บปวดดั้งเดิมของ TDD การเขียนเทสต์ไม่ใช่ส่วนที่ช้าอีกต่อไป คุณมุ่งเน้นไปที่การระบุพฤติกรรมเป็นภาษาธรรมดา และ Claude Code จะจัดการงานซ้ำซากของการเซ็ตอัปเทสต์ assertions และ mocking ผลลัพธ์คือ test coverage ที่สูงขึ้น โค้ดที่ออกแบบดีขึ้น และการพัฒนาที่เร็วขึ้น

การพัฒนาแบบขับเคลื่อนด้วยเทสต์กับ Claude Code ตามวงจร red-green-refactor: คุณอธิบายพฤติกรรมที่ต้องการ ให้ Claude เขียนเทสต์ที่ fail แล้วขอให้มัน implement โค้ดเพื่อให้ผ่าน Claude Code จัดการวงจรทั้งหมดโดยอัตโนมัติเมื่อได้รับสเปกที่ชัดเจน

วงจร

วงจร TDD กับ Claude Code

R
Red เขียนเทสต์ที่ fail

อธิบายพฤติกรรมที่คุณต้องการ implement: "ผู้ใช้ควรสามารถรีเซ็ตรหัสผ่านผ่านอีเมลได้ endpoint ควรตรวจสอบว่าอีเมลมีอยู่จริง สร้าง token ที่มีเวลาจำกัด และส่งลิงก์รีเซ็ต" Claude Code จะเขียนเทสต์ก่อน โดยยืนยัน HTTP response ที่คาดหวัง การสร้าง token และการส่งอีเมล ก่อนที่จะมีการ implement ใด ๆ อยู่ มันรันเทสต์เพื่อยืนยันว่ามัน fail ด้วยเหตุผลที่ถูกต้อง (ฟังก์ชันขาดไป ไม่ใช่ syntax error)

G
Green implement โค้ดขั้นต่ำ

Claude Code จะเขียนการ implement ที่ง่ายที่สุดที่ทำให้เทสต์ผ่าน มันไม่ over-engineer มันเขียนโค้ดเพียงพอที่จะตอบสนอง assertion ของเทสต์ ความมีระเบียบวินัยนี้คือจุดที่ TDD โดดเด่น: เทสต์กำหนดสัญญา และการ implement ทำให้สัญญานั้นเป็นจริง Claude Code รันชุดเทสต์หลังจากเขียนการ implement เพื่อตรวจสอบว่าเทสต์ใหม่ผ่านและไม่มีเทสต์ที่มีอยู่แล้วเสียหาย

R
Refactor ปรับปรุงโดยไม่เปลี่ยนพฤติกรรม

ด้วยเทสต์ที่ผ่านเป็นตาข่ายนิรภัย คุณขอให้ Claude Code ทำความสะอาดการ implement: แยกฟังก์ชันตัวช่วย ปรับปรุงชื่อตัวแปร ลดความซ้ำซ้อน หรือปรับปรุงประสิทธิภาพ หลังจากขั้นตอนการ refactor แต่ละครั้ง Claude Code จะรันเทสต์อีกครั้ง ถ้าเทสต์ล้มเหลว หมายความว่าการ refactor นำเข้าการเปลี่ยนแปลงพฤติกรรม และ Claude Code จะยกเลิกหรือปรับการเปลี่ยนแปลงนั้น เฟสนี้ผลิตโค้ดที่สะอาดและดูแลง่าย โดยมีเทสต์ที่ครอบคลุมหนุนหลัง

การสาธิต

การเขียนฟีเจอร์แบบขับเคลื่อนด้วยเทสต์ตัวแรกของคุณ

ขั้นตอนที่ 1: อธิบายพฤติกรรม ไม่ใช่การ implement

เริ่มต้นด้วยการบอก Claude Code ว่าฟีเจอร์ควรทำอะไรจากมุมมองของผู้ใช้ แทนที่จะพูดว่า "สร้างฟังก์ชันชื่อ calculateDiscount ที่รับราคาและเปอร์เซ็นต์" ให้พูดว่า "ลูกค้าที่มีสมาชิกภาพพรีเมียมควรได้รับส่วนลด 20% จากยอดรวมคำสั่งซื้อ แต่ส่วนลดไม่ควรเกิน 50 ดอลลาร์" คำอธิบายเชิงพฤติกรรมนี้สร้างเทสต์ที่ดีกว่า เพราะเทสต์ตรวจสอบกฎทางธุรกิจ ไม่ใช่รายละเอียดการ implement

ขั้นตอนที่ 2: ตรวจสอบเทสต์ที่ถูกสร้างขึ้น

Claude Code เขียนไฟล์เทสต์ที่มีหลายกรณี: happy path (ผู้ใช้พรีเมียม ส่วนลดที่ถูกต้อง) edge case (ส่วนลดเกินเพดาน 50 ดอลลาร์ คำสั่งซื้อที่ราคาเป็นศูนย์) และ error case (ผู้ใช้ที่ไม่ใช่พรีเมียม ราคาติดลบ) ตรวจสอบเทสต์เหล่านี้ก่อนให้ Claude Code implement ฟีเจอร์ กรณีเทสต์กำหนดสเปกของคุณ ถ้ากรณีใดขาดไป ให้เพิ่มเข้าไปตอนนี้ การเพิ่มกรณีเทสต์ถูกกว่ามากในการค้นพบ edge case ที่ขาดไปในโปรดักชัน

ขั้นตอนที่ 3: ให้ Claude Code implement และทำซ้ำ

เมื่อคุณอนุมัติเทสต์แล้ว บอกให้ Claude Code implement ฟีเจอร์นั้น มันจะเขียนโค้ด รันเทสต์ และแสดงผลลัพธ์ให้คุณ ถ้าเทสต์ทั้งหมดผ่านในครั้งแรก คุณสามารถไปที่ refactoring ได้ ถ้าเทสต์บางตัว fail Claude Code จะอ่านผลลัพธ์ที่ล้มเหลวและปรับการ implement วงจรนี้มักจะเสร็จสิ้นภายในหนึ่งหรือสองรอบ ซึ่งเร็วกว่าลูป write-run-debug แบบแมนนวลมาก

ทำไมมันได้ผล

ทำไม Claude Code ทำให้ TDD ง่ายขึ้น

มันขจัดความยุ่งยากในการเขียนเทสต์

เหตุผลอันดับหนึ่งที่นักพัฒนาข้าม TDD คือการเขียนเทสต์รู้สึกช้าและน่าเบื่อ โดยเฉพาะโค้ดเซ็ตอัป mocking และ assertion ที่ซ้ำซาก Claude Code ขจัดความยุ่งยากนี้ไปทั้งหมด คุณอธิบายสิ่งที่ควรเกิดขึ้นในหนึ่งประโยค และ Claude Code จะสร้างไฟล์เทสต์ที่สมบูรณ์พร้อม import ที่ถูกต้อง fixtures, mocks, และการครอบคลุม edge case ภาระทางความคิดเปลี่ยนจาก "ฉันจะ mock dependency นี้ยังไง" เป็น "พฤติกรรมอะไรที่สำคัญ"

มันจับ edge case ที่คุณอาจจะพลาด

เมื่อ Claude Code เขียนเทสต์จากคำอธิบายพฤติกรรม มันจะสร้าง edge case ที่นักพัฒนามักลืม: อินพุตที่ว่าง ค่าขอบเขต การเข้าถึงพร้อมกัน การจัดการค่า null และการเปลี่ยนสถานะที่ไม่ถูกต้อง มันทำได้เพราะมันเคยเห็นชุดเทสต์เป็นล้าน ๆ และรู้ว่า edge case ใดที่มักก่อให้เกิดบั๊ก คุณได้ test coverage ที่ครอบคลุมมากขึ้นโดยไม่ต้องคิดถึงทุกกรณีด้วยตัวเอง

มันทำให้คุณอยู่ในกรอบของ TDD

TDD รักษาไว้ได้ยากเพราะการล่อลวงให้ข้ามเทสต์แล้วเขียนโค้ดตรงมีอยู่เสมอ ด้วย Claude Code การเขียนเทสต์ก่อนนั้นเร็วกว่าการเขียนการ implement ก่อนจริง ๆ จึงไม่มีแรงจูงใจให้ข้ามมัน วงจร Red-Green-Refactor กลายเป็นธรรมชาติเพราะ Claude Code บังคับใช้แต่ละขั้นตอน: มันเขียนเทสต์ รันเพื่อยืนยันความล้มเหลว implement โค้ด และรันเทสต์อีกครั้งเพื่อยืนยันความสำเร็จ

การสนับสนุนเฟรมเวิร์ก

เฟรมเวิร์กการเทสต์ที่ Claude Code สนับสนุน

Jest & Vitest (JavaScript/TypeScript)

Claude Code เขียนเทสต์ Jest และ Vitest ด้วย mocking ที่ถูกต้อง การจัดการ async, snapshot testing, และการผสานกับ React Testing Library มันสร้างบล็อก describe/it ที่อ่านได้เหมือนสเปก และใช้ beforeEach/afterEach เพื่อแยกเทสต์อย่างสะอาด

pytest (Python)

สนับสนุน pytest เต็มรูปแบบ รวมถึง fixtures, parametrize, marks, conftest.py และ plugins อย่าง pytest-asyncio, pytest-django, และ pytest-mock Claude Code เขียนเทสต์ที่ใช้ dependency injection ผ่าน fixtures และตามรูปแบบ Arrange-Act-Assert

Go testing และ Rust tests

Claude Code เขียน table-driven test ของ Go แบบ idiomatic ด้วยการ wrap error ที่ถูกต้องและ subtests และฟังก์ชัน Rust #[test] ด้วยการจัดการ Result ที่ถูกต้อง setup/teardown และการผสาน proptest สำหรับการเทสต์แบบ property-based

End-to-end ด้วย Playwright

สำหรับ TDD แบบ full-stack Claude Code เขียนเทสต์ Playwright ที่ทำงานในแอปพลิเคชันทั้งหมดของคุณจากเบราว์เซอร์ มันจัดการ page navigation, การโต้ตอบของฟอร์ม, API assertions, และ visual regression ให้คุณอธิบาย user stories ในขณะที่มันสร้างสคริปต์เทสต์แบบอัตโนมัติ

คำถามที่พบบ่อย

TDD กับ Claude Code คำถามที่พบบ่อย

ฉันสามารถใช้ Claude Code TDD กับโปรเจกต์ที่มีอยู่แล้วได้ไหม?

ได้แน่นอน Claude Code อ่านโครงสร้างพื้นฐานการเทสต์ที่มีอยู่ เฟรมเวิร์กการเทสต์ fixtures, mocks, factories, และ convention ของคุณ และเขียนเทสต์ใหม่ที่เข้ากับชุดเทสต์ที่มีอยู่ของคุณได้อย่างเป็นธรรมชาติ ถ้าโปรเจกต์ของคุณใช้ pytest ที่มี conftest.py fixtures, Claude Code จะสร้างเทสต์ที่ใช้ fixtures เหล่านั้น ถ้าโปรเจกต์ React ของคุณใช้ Testing Library ที่มี render utilities แบบกำหนดเอง Claude Code จะทำตามรูปแบบนั้น คุณไม่ต้องเริ่มต้นจากศูนย์

ฉันควรตั้งเป้า coverage เท่าไร?

เปอร์เซ็นต์ coverage สำคัญน้อยกว่าคุณภาพของ coverage Claude Code ช่วยให้คุณมุ่งเน้นไปที่ behavior coverage มากกว่า line coverage เมื่อคุณอธิบายฟีเจอร์ในแง่ของสิ่งที่มันควรทำ (ไม่ใช่วิธีการ) เทสต์ที่สร้างขึ้นจะครอบคลุมเส้นทางสำคัญโดยธรรมชาติ แม้อย่างนั้น Claude Code สามารถวิเคราะห์รายงาน coverage ที่มีอยู่และระบุ branches ที่ไม่ได้ทดสอบ แล้วเขียนเทสต์แบบเจาะจงเพื่อเติมช่องว่าง ตั้งเป้าให้ครอบคลุม business logic และ error handling อย่างทั่วถึง ไม่ใช่ line coverage 100%

Claude Code สามารถเขียน integration test ได้ไหม?

ได้ Claude Code เขียน integration test ที่ทำให้หลายคอมโพเนนต์ทำงานร่วมกัน API endpoints ที่เชื่อมต่อกับ test database จริง React component ที่โต้ตอบกับ mocked API responses หรือ service layer ที่ประสานงานหลาย dependencies มันจัดการการเซ็ตอัปและ teardown ของ test database, test fixtures, และการกำหนดค่า mock server สำหรับ API integration test มันสร้างเทสต์ที่ตรวจสอบวงจร request-response แบบเต็ม รวมถึง authentication, validation, และ error responses

เฟสการ refactoring ทำงานอย่างไร?

หลังจาก Green (เทสต์ผ่านด้วยการ implement ที่ใช้งานได้) คุณจะเข้าสู่เฟส Refactor ขอให้ Claude Code ปรับปรุงการ implement, แยกฟังก์ชัน, ลดความซ้ำซ้อน, ปรับปรุงการตั้งชื่อ, หรือปรับปรุงประสิทธิภาพ Claude Code ทำการเปลี่ยนแปลงและรันชุดเทสต์อีกครั้งหลังจากทุกขั้นตอนการ refactor ถ้าเทสต์ล้มเหลว หมายความว่าการ refactor เปลี่ยนพฤติกรรม และ Claude Code จะแก้ไขการ refactor หรือตั้งค่าสถานะการเปลี่ยนแปลงพฤติกรรมเพื่อให้คุณตรวจสอบ เทสต์ทำหน้าที่เป็นตาข่ายนิรภัยตลอดกระบวนการ

เวิร์กโฟลว์ TDD ที่ดีที่สุดกับ AI คืออะไร?

อธิบายพฤติกรรมของฟีเจอร์เป็นภาษาธรรมดา ให้ Claude Code เขียนเทสต์ที่ fail (Red) จากนั้นขอให้ implement โค้ดเพื่อให้เทสต์ผ่าน (Green) และสุดท้ายขอให้ refactor (Refactor) วงจร Red-Green-Refactor นี้กับ Claude Code เร็วกว่า TDD แบบแมนนวล เพราะ Claude เขียนทั้งเทสต์และการ implement ในขณะที่คุณมุ่งเน้นไปที่การกำหนด requirement

Claude Code รันเทสต์โดยอัตโนมัติระหว่าง TDD หรือไม่?

ใช่ Claude Code รันชุดเทสต์ของคุณหลังจากเขียนเทสต์แต่ละตัวและหลังจากการเปลี่ยนแปลงการ implement แต่ละครั้ง มันอ่านผลลัพธ์ของเทสต์ ระบุความล้มเหลว และทำซ้ำจนกว่าเทสต์จะผ่าน คุณยังสามารถตั้งค่า hooks ให้รัน linters และ type checkers โดยอัตโนมัติหลังจากการแก้ไขไฟล์แต่ละครั้ง สร้าง quality gate ที่เป็นอัตโนมัติอย่างสมบูรณ์

เรียนรู้ TDD กับ Claude Code

เลิกอ่านเกี่ยวกับมันซะ มาสร้างอะไรสักอย่างกันเถอะ

Nightschool AI เป็นแพลตฟอร์มการเรียนรู้อิสระ ไม่มีส่วนเกี่ยวข้อง ได้รับการรับรอง หรือได้รับการสนับสนุนจาก Anthropic แต่อย่างใด Claude เป็นเครื่องหมายการค้าของ Anthropic, PBC กำลังมองหา Claude Academy อย่างเป็นทางการของ Anthropic อยู่ใช่ไหม ไปที่ academy.claude.com