Documentation
กลับไปหมวดหมู่

Test Driven Development

เวลาอ่านโดยประมาณ: ~15 นาที

Test Driven Development (TDD)

Test Driven Development (TDD) เป็นเทคนิคการพัฒนาซอฟต์แวร์ที่เน้นการเขียนเทสก่อนเขียนโค้ดจริง ช่วยให้แน่ใจว่าโค้ดมีคุณภาพและสามารถบำรุงรักษาได้ง่าย

TDD Cycle คืออะไร

TDD ประกอบด้วย 3 ขั้นตอนหลักที่เรียกว่า "Red-Green-Refactor":

  1. Red - เขียนเทสที่ยังไม่ผ่าน
  2. Green - เขียนโค้ดให้เทสผ่าน
  3. Refactor - ปรับปรุงโค้ดให้สะอาดขึ้น

การตั้งค่าโปรเจกต์

เริ่มต้นสร้างโปรเจกต์ใหม่และติดตั้ง Vitest:

ตัวอย่าง TDD ด้วย FizzBuzz

ขั้นตอนที่ 1: เขียนเทสเบื้องต้น (Red)

สร้างไฟล์ src/fizzbuzz.spec.ts:

ขั้นตอนที่ 2: ใช้ Parameterized Tests

ปรับปรุงเทสให้ใช้ it.each เพื่อทดสอบหลาย cases:

ขั้นตอนที่ 3: เพิ่ม Test Cases ครบถ้วน

ขั้นตอนที่ 4: เขียนโค้ดให้ผ่านเทส (Green)

สร้างไฟล์ src/fizzbuzz.usecase.ts:

การตั้งค่า Domain Model

สร้างไฟล์ src/domain/users.domain.ts:

การตั้งค่า Code Coverage

ติดตั้ง VS Code Extension

ติดตั้ง extension Coverage Gutters ใน VS Code เพื่อแสดง coverage ในโค้ด

เพิ่ม Scripts ใน package.json

สร้างไฟล์ vitest.config.ts

ติดตั้ง Dependencies เพิ่มเติม

สร้างไฟล์ vitest.global-setup.ts

การใช้ Mock สำหรับ Unit Testing

ติดตั้ง vitest-mock-extended และ builder-pattern

ตัวอย่าง: SignInUseCase พร้อม Mock Repository

สร้างไฟล์ src/ports/users.repository.ts:

สร้างไฟล์ src/sign-in.usecase.ts:

เขียน Unit Test พร้อม Mock

สร้างไฟล์ src/sign-in.spec.ts:

เมื่อไหร่ควรใช้ TDD

  • เมื่อต้องการความมั่นใจในคุณภาพโค้ดสูง
  • เมื่อโปรเจกต์มีความซับซ้อน
  • เมื่อต้องการ refactor โค้ดที่มีอยู่
  • เมื่อทำงานเป็นทีม

แหล่งข้อมูลเพิ่มเติม

หนังสือและบทความ

แนะนำสำหรับการเรียนรู้เพิ่มเติม