Unit Testing กับ Integration Testing ต่างกันอย่างไร?
5 ก.ย. 2568
Share
โลกของการทดสอบซอฟต์แวร์
มีหลากหลายรูปแบบ เช่น
E2E Testing (End-to-End)
UAT
Regression Testing
Smoke Testing
A/B Testing
Recovery Testing
Exploratory Testing
Beta Testing
Integration Testing
Alpha Testing
Sanity Testing
Unit Testing
Unit Testing คืออะไร?
Unit Testing คือการทดสอบ “หน่วยย่อย”
ของระบบเช่น
ฟังก์ชัน, เมธอด, คลาส โดยไม่สนการเชื่อมต่อกับส่วนอื่น
ตัวอย่าง Unit Testing
ฟังก์ชันจริง (เช่น add())
นิยามฟังก์ชัน sum() ที่รับเลข 2 ตัว
แล้วคืนค่าผลรวมใช้ Module.Exports
เพื่อให้เรียกใช้งานได้จากไฟล์อื่น
ตัวอย่าง Unit Testing
โค้ดทดสอบ Unit (เช่น test_add())
ทดสอบว่าเมื่อเรียก sum(1, 2) แล้วได้ผลลัพธ์
เท่ากับ 3 หรือไม่
เป็นการทดสอบฟังก์ชัน แยกเดี่ยวไม่พึ่งพาส่วนอื่น
Integration Testing คืออะไร?
Integration Testing คือการทดสอบ หลาย ๆ ฟังก์ชันทำงานร่วมกันได้ถูกต้องไหม
ตัวอย่าง Integration Testing
ฟังก์ชันหลายตัวที่เชื่อมกัน (เช่น CalculateTotal() และ GetDiscount())
GetUser(id) คืนข้อมูลผู้ใช้ตาม id
GetWelcomeMessage(user) คืนข้อความต้อนรับ
โดยอิงจากชื่อผู้ใช้ส่งออกทั้งสองฟังก์ชันผ่าน Module.exports
ตัวอย่าง Integration Testing
โค้ดทดสอบ Integration (เช่น test_calculateTotal_with_discount())
ทดสอบว่าเมื่อนำผลลัพธ์จาก getUser() ไปใช้
กับ getWelcomeMessage()
แล้วได้ข้อความ “Welcome, Alice!” อย่างถูกต้อง
แสดงให้เห็นว่าฟังก์ชันทำงานร่วมกันได้ดี
Unit Testing
ใช้ตั้งแต่ช่วงเริ่มเขียนโค้ดเลย
ช่วยป้องกันบั๊กเล็ก ๆ ที่เราอาจลืมตอนพัฒนา
เหมาะกับเช็กว่าโค้ดแต่ละชิ้นทำงานถูกต้องตั้งแต่แรก
Integration Testing
ใช้ตอนระบบเริ่มมีหลายส่วนทำงานร่วมกัน
ช่วยให้มั่นใจว่าส่วนต่าง ๆ
เชื่อมต่อกันได้จริง
ป้องกันบั๊กที่เกิดจาก "ต่อกันไม่ถูก"
เช่น API, DB, หรือระบบอื่น ๆ
ถ้าไม่ทำ Unit Testing
& Integration Testing จะเกิดอะไรขึ้น?
การไม่ทำ Unit Testing หรือ Integration Testing
เปรียบเสมือนส่งของโดยไม่ตรวจสอบว่าชิ้นส่วน
แต่ละชิ้นทำงานถูก และประกอบเข้ากันได้หรือไม่
Testing Libraries ที่ Dev นิยมใช้
Jest - ✅ Unit + Integration
ใช้งานง่าย ครบทุกอย่างในตัว เหมาะกับ React และ Node.jsCypress - ✅ Integration + E2E
ทดสอบผ่านเบราว์เซอร์จริง เห็นผลการทำงานของระบบ แบบสมจริงPlaywright - ✅ Integration + E2E
รองรับหลายเบราว์เซอร์ ทดสอบอัตโนมัติแบบเร็ว และเสถียร ใช้แทน Selenium ได้Vitest - ✅ Unit + Integration
เบา เร็ว เหมาะกับโครงการ ที่ใช้ Vite เช่น Vue หรือ SvelteMocha - ✅ Unit (+ Integration)
ยืดหยุ่นสูง เลือกส่วนเสริมเองได้ เหมาะกับสายควบคุมละเอียด