การทดสอบหน่วย

การทดสอบแบบ Unit Test คือวิธีการทดสอบที่ตรวจสอบหน่วยย่อยที่สุดของโปรแกรม เช่น ฟังก์ชันหรือเมธอด เป็นรายการ โดยแทนที่การพึ่งพาภายนอกด้วย Mock เพื่อให้สามารถตรวจสอบเฉพาะ Logic ที่ต้องการได้อย่างรวดเร็ว
"หน่วย" ในการทดสอบหมายถึงอะไร
"หน่วย" ในการทดสอบแบบ Unit Test มีระดับความละเอียดที่แตกต่างกันไปตามภาษาและ framework บางครั้งหมายถึงฟังก์ชันเดียว บางครั้งหมายถึงคลาสหนึ่งหรือทั้งโมดูล สิ่งที่มีร่วมกันคือหลักการ "ทดสอบโดยตัดการเชื่อมต่อกับ I/O ภายนอก (DB, network, file system) ออก"
การพึ่งพาภายนอกจะถูกแทนที่ด้วย mock หรือ stub เช่น การคืนค่าผลลัพธ์ query ของ Supabase ผ่าน mock object หรือการแทนที่ API call ด้วย stub วิธีนี้ทำให้เวลาในการรันอยู่ในระดับมิลลิวินาที และสามารถรันได้หลายร้อยถึงหลายพันรายการต่อ commit ใน CI pipeline
ข้อจำกัดของ Mock
เนื่องจาก mock สามารถคืนค่า object ที่มี property ใดก็ได้ตามต้องการ จึงไม่สามารถตรวจจับความไม่สอดคล้องกับ DB schema ได้ incident ที่ว่า "test ผ่านทุกรายการ แต่เกิด column does not exist ใน production" นั้นไม่ใช่เรื่องแปลก Unit test มีความแข็งแกร่งในการตรวจสอบ business logic แต่ความสอดคล้องของ system boundary จำเป็นต้องเสริมด้วย functional test หรือ E2E test
ความสัมพันธ์กับ TDD
TDD (Test-Driven Development) คือแนวทางการพัฒนาที่ใช้ unit test เป็น "เครื่องมือออกแบบ" การเขียน test ก่อนทำให้ข้อกำหนดด้านอินพุตและเอาต์พุตของฟังก์ชันถูกกำหนดขึ้นก่อนการ implement ทั้งสองสิ่งนี้ผูกพันกันอย่างใกล้ชิด เนื่องจาก TDD มี unit test เป็นพื้นฐาน
บทความที่กล่าวถึงคำศัพท์นี้
- ขั้นตอนการทำ ATDD (Acceptance Test-Driven Development): ความแตกต่างจาก BDD/TDD และรูปแบบการนำไปใช้เจาะลึกขั้นตอนการทำ ATDD พร้อมวิธีเลือกใช้ร่วมกับ BDD และ TDD รวมถึงแนวทางการนำไปปรับใช้ในทีมสำหรับ QA Engineer โดยเฉพาะ
- การทำ AI Red Teaming แบบอัตโนมัติ: การสร้าง Test Case และการตรวจสอบช่องโหว่ที่ขยายผลได้เรียนรู้วิธีทำ AI Red Teaming แบบอัตโนมัติ ทั้งการใช้เครื่องมือสร้าง Test Case, การทำ Vulnerability Validation ที่ขยายผลได้ และขั้นตอนการทำ Continuous Security Testing
- เรียนรู้จากสาเหตุและกรณีศึกษาความล้มเหลวของ PoC: ออกแบบการนำ AI มาใช้ด้วย Specification-Driven Development (SDD) และ Acceptance Test-Driven Development (ATDD)สาเหตุที่ AI PoC ล้มเหลวคือการไม่เข้าใจธรรมชาติของ AI ตั้งแต่ขั้นวางแผน เรียนรู้วิธีแก้ปัญหาด้วย SDD และ ATDD พร้อมเช็คลิสต์ก่อนเริ่มโปรเจกต์ที่นี่
- AI Observability คืออะไร? คู่มือการตรวจสอบและดูแล LLM ในการใช้งานจริงเรียนรู้พื้นฐาน AI Observability พร้อมเจาะลึกการทำ Trace, ประเมินผล และจัดการต้นทุนสำหรับ LLM ในโปรดักชัน รวมถึงขั้นตอนการใช้งานและการเลือกเครื่องมือที่เหมาะสม
คำศัพท์ที่เกี่ยวข้อง

การทดสอบ 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) คือวิธีการพัฒนาซอฟต์แวร์ที่ทีมงานทั้งหมดร่วมกันกำหนดเกณฑ์ก



