Unit Testing กับ Integration Testing ต่างกันอย่างไร?

5 ก.ย. 2568

Share

โลกของการทดสอบซอฟต์แวร์
มีหลากหลายรูปแบบ เช่น

  1. E2E Testing (End-to-End)

  2. UAT

  3. Regression Testing

  4. Smoke Testing

  5. A/B Testing

  6. Recovery Testing

  7. Exploratory Testing

  8. Beta Testing

  9. Integration Testing

  10. Alpha Testing

  11. Sanity Testing

  12. 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 นิยมใช้

  1. Jest - ✅ Unit + Integration
    ใช้งานง่าย ครบทุกอย่างในตัว
เหมาะกับ React และ Node.js

  2. Cypress - ✅ Integration + E2E
    ทดสอบผ่านเบราว์เซอร์จริง
เห็นผลการทำงานของระบบ
แบบสมจริง

  3. Playwright - ✅ Integration + E2E
    รองรับหลายเบราว์เซอร์
ทดสอบอัตโนมัติแบบเร็ว
และเสถียร ใช้แทน Selenium ได้

  4. Vitest - ✅ Unit + Integration
    เบา เร็ว เหมาะกับโครงการ
ที่ใช้ Vite เช่น Vue หรือ Svelte

  5. Mocha - ✅ Unit (+ Integration)
    ยืดหยุ่นสูง เลือกส่วนเสริมเองได้ เหมาะกับสายควบคุมละเอียด

บทความที่น่าสนใจ

บริษัท เดฟสมิทธ์ 4289 จำกัด
228/99 หมู่ที่ 7 ตำบลท่าโพธิ์ อำเภอเมือง
จังหวัดพิษณุโลก 65000

บริษัท เดฟสมิทธ์ 4289 จำกัด
228/99 หมู่ที่ 7 ตำบลท่าโพธิ์ อำเภอเมือง
จังหวัดพิษณุโลก 65000

บริษัท เดฟสมิทธ์ 4289 จำกัด
228/99 หมู่ที่ 7 ตำบลท่าโพธิ์ อำเภอเมือง
จังหวัดพิษณุโลก 65000