การทดสอบฟังก์ชัน

การทดสอบฟังก์ชัน

การทดสอบเชิงฟังก์ชัน (Feature Test) คือวิธีการทดสอบที่ตรวจสอบพฤติกรรมของระบบในระดับฟังก์ชันหรือ Use Case ที่เฉพาะเจาะจง โดยครอบคลุมขอบเขตที่กว้างกว่าการทดสอบแบบ Unit Test และมุ่งยืนยันว่าโมดูลหลายตัวทำงานร่วมกันได้อย่างถูกต้อง

ระหว่าง Unit Test และ E2E Test

ชั้นกลางของ Test Pyramid คือ Functional Test โดยที่ Unit Test รับประกันความถูกต้องในระดับฟังก์ชัน และ E2E Test ตรวจสอบการทำงานของระบบโดยรวม ส่วน Functional Test นั้นทำหน้าที่ตรวจสอบ "ผลลัพธ์ที่เกิดจาก User Action หนึ่งรายการ"

ตัวอย่างเช่น Functional Test สำหรับ "การสร้างพนักงาน" จะครอบคลุมตั้งแต่การเรียก Server Action ไปจนถึง Validation, การบันทึกลง DB และการส่ง Response กลับ อย่างไรก็ตาม ไม่จำเป็นต้องเปิด Browser แต่ใช้การจำลอง HTTP Request หรือการเรียก Server Action โดยตรงแทน

ขอบเขตของ Functional Test

แม้ว่าขอบเขตของ "1 ฟีเจอร์" มักจะไม่ชัดเจน แต่เกณฑ์การตัดสินนั้นเรียบง่าย คือ การเรียก Server Action หนึ่งครั้ง หรือ API Endpoint หนึ่งรายการ จะสอดคล้องกับ Functional Test หนึ่งกรณี ส่วนกรณีที่มีการเชื่อมต่อ Action หลายรายการต่อเนื่องกัน เช่น "สร้างแผนก → สร้างตำแหน่งงาน → สร้างพนักงาน" จะจัดอยู่ในประเภท Integration Test

ความแตกต่างจาก Acceptance Test

Functional Test ตรวจสอบจากมุมมองของนักพัฒนาว่า "การ Implementation ตรงตาม Specification หรือไม่" ส่วน Acceptance Test ตรวจสอบจากมุมมองทางธุรกิจว่า "ตอบสนองต่อ Requirement หรือไม่" แม้จะตรวจสอบการดำเนินการเดียวกัน แต่มุมมองในการตรวจสอบและระดับความละเอียดในการบรรยายนั้นแตกต่างกัน

บทความที่กล่าวถึงคำศัพท์นี้