UAT vs System Test
System Test คืออะไร?
System Test คือ การทดสอบทั้งระบบ ที่ทำงานเสร็จสมบูรณ์แล้ว เพื่อดูว่าทุกส่วนของระบบทำงานร่วมกันได้ถูกต้อง ตาม requirement ที่กำหนดไว้
ตัวอย่างการทำ System Test
สมมติเราสร้าง แอปสั่งอาหาร:
Features | Test case |
---|---|
เลือกรายการอาหาร | เลือกเมนูแล้ว ต้องแสดงในตะกร้า |
กรอกที่อยู่จัดส่ง | ระบบต้องบันทึกที่อยู่ถูกต้อง |
ชำระเงินผ่าน QR Code | ระบบต้องตัดเงินได้จริง |
การแจ้งเตือนสถานะอาหาร | ต้องแจ้ง “กำลังจัดส่ง” ได้ |
System Test จะรันตั้งแต่เลือกอาหาร → กดจ่ายเงิน → สั่งอาหารสำเร็จ → ร้านค้ารับออร์เดอร์ → คนขับมาส่งอาหาร เป็นการทดสอบครบทุก flow เหมือนผู้ใช้งานจริง
ขั้นตอนการทำ System Test
- ระบบพัฒนาเสร็จ (หลังจาก Unit Test, Integration Test)
- เตรียม Test Plan (วางแผนว่าจะทดสอบอะไรบ้าง)
- เขียน Test Case สำหรับทุกฟีเจอร์
- รันทดสอบจริง → เก็บผลลัพธ์
- ถ้ามี Bug → แจ้ง Dev
- Retest จนกว่าทุกอย่างจะ Pass
เป้าหมายสุดท้ายของ System Test
✅ ตรวจสอบความถูกต้อง ครบถ้วนของทั้งระบบ
✅ พร้อมส่งไปให้ลูกค้าทำ Acceptance Test ต่อได้เลย
Acceptance Test คืออะไร?
Acceptance Test คือ การทดสอบเพื่อให้ลูกค้า, ผู้ใช้งาน, หรือ Product Owner ตรวจสอบว่าระบบที่สร้างขึ้นตรงกับความต้องการ(Requirements) สามารถตอบโจทย์ทางธุรกิจได้รึเปล่า และตัดสินใจว่าจะ “ยอมรับ” หรือ “ไม่ยอมรับ” ระบบนั้น พูดง่ายๆ ก็คือ “ทดสอบเพื่อให้ลูกค้าตอบว่า ระบบสามารถนำไปใช้งานได้จริง”
Key หลักของ Acceptance Test
- ทดสอบตาม ความต้องการทางธุรกิจ (Business Requirement) หรือ Acceptance Criteria ที่ตกลงกัน
- เน้นทดสอบ จากมุมมองของผู้ใช้ (User Perspective)
- ตรวจสอบว่า User experience เป็นไปตามที่ลูกค้าคาดหวังหรือไม่
ตัวอย่าง Acceptance Test
สมมติเราทำ แอปจองโรงแรม แล้วส่งให้ลูกค้าทดสอบ
Test case | Example |
---|---|
ระบบจองห้องได้จริงไหม | กรอกวันที่เข้าพัก แล้วกดจอง ต้องได้ห้องตามต้องการ |
การชำระเงินปลอดภัยไหม | หลังกรอกบัตรเครดิต ต้องมีข้อความยืนยันที่ชัดเจน |
มีอีเมลยืนยันการจองไหม | หลังจองเสร็จ ต้องมีอีเมลเข้าใน 5 นาที |
ลูกค้าจะไม่ได้สนใจว่าเราเขียน Code ยังไงแต่จะดูแค่ว่า “ของที่ได้ ตรงกับที่อยากได้หรือไม่”
ขั้นตอนปกติของการทำ Acceptance Test
- ทีมพัฒนา (Dev/QA) ส่งระบบเวอร์ชันพร้อมทดสอบให้ลูกค้า
- ลูกค้าเปิด Test Script หรือ Checklist ที่ทำไว้ล่วงหน้า
- ลูกค้าทำตามขั้นตอนที่กำหนด (Scenario) เช่น สมัครสมาชิก, สั่งซื้อสินค้า
- ลูกค้าให้ผลลัพธ์ (Accept/Reject) ตามแต่ละหัวข้อ
- ถ้าผ่านทุกข้อ → ระบบ “ผ่าน” และ “ส่งมอบ” ได้
- ถ้ามี Reject → ส่งกลับมาให้ทีมแก้ไข แล้วค่อย Retest ใหม่
ทำไม Acceptance Test ถึงสำคัญ?
- ป้องกันปัญหา “ทำเสร็จแล้ว ลูกค้าบอกไม่เอา”
- ทำให้มั่นใจว่า สิ่งที่ส่งมอบ ตรงกับความต้องการจริง ๆ
- ช่วยลดความเสี่ยงก่อนโปรเจกต์ปิดงานหรือ Go-Live
เป้าหมายของ Acceptance Test
✅ ลูกค้าเซ็นว่า “ผ่าน”
✅ ระบบพร้อมเปิดใช้งานจริง (Production)
System Test vs Acceptance Test
System Test | Acceptance Test | |
---|---|---|
เป้าหมาย | ตรวจสอบว่า ระบบทั้งระบบ ทำงานถูกต้องและครบถ้วนไหม (Functional และ Non-functional) | ตรวจสอบว่า ระบบตอบโจทย์ความต้องการของลูกค้า ไหม และลูกค้ายอมรับได้หรือเปล่า |
ข้อมูล | ทดสอบด้วยข้อมูลที่ไม่ใช่ของจริง(Fake) | ทดสอบด้วยข้อมูลจริง |
ผู้ทดสอบ | ทีม QA / Tester หรือ Developer | ลูกค้า, ตัวแทนลูกค้า (Product Owner), หรือทีม UAT |
มุมมอง | มองในมุม “ระบบต้องทำงานได้ตาม requirement และสเปก” | มองในมุม “ระบบตรงกับที่ลูกค้าคาดหวังไหม ใช้งานได้จริงไหม” |
ขอบเขต | - ทดสอบทุกฟีเจอร์และการทำงานร่วมกันของฟีเจอร์ - ทดสอบ End-to-End Flow - ทดสอบ Performance, Load, Security (บางกรณี) |
- ทดสอบเฉพาะสิ่งที่ระบุไว้ใน Acceptance Criteria ของแต่ละ User Story หรือ Contract - เน้น Business Scenario จริง เช่น “กดซื้อสินค้าแล้วต้องได้รับอีเมลยืนยัน” |
สิ่งที่ทดสอบ | - ฟีเจอร์ครบ - ไม่มี Bug - ทดสอบผ่านทุก test case ที่เขียนไว้ |
- ลูกค้าพอใจ และ “Accept” - ตรงตาม Acceptance Criteria ที่ตกลงกัน |
ขั้นตอน | หลัง Integration Testing แต่ก่อนส่งให้ลูกค้า | หลัง System Test ผ่านแล้ว และก่อน Release จริง |
เครื่องมือ | Automation Test (Selenium, Robot Framework), Manual Testing, Performance Tools (เช่น JMeter) | แบบฟอร์ม UAT, Checklists, Scripts ที่ลูกค้าเข้าใจง่าย |
สรุป
ในการทดสอบ Software จะมีขั้นตอนการทดสอบหลักๆ ดังนี้
- Unit Test → Dev เขียนโค้ดเสร็จ ทดสอบโค้ดส่วนตัวเองก่อน
- Integration Test → เช็กว่าระบบย่อย ๆ เชื่อมกันทำงานได้
- System Test → QA ทดสอบระบบใหญ่แบบ End-to-End, มีทั้ง Manual + Automation
- Acceptance Test (UAT) → ลูกค้า หรือ Product Owner ทดสอบจากมุมมองผู้ใช้จริง ว่าตรงตามที่อยากได้ไหม
เราต้องทำ System test ก่อน UAT เสมอ
Acceptance Test ผ่านถึงจะสามารถ Deploy ขึ้นไปบน Production ได้