ปี 2012 Knight Capital Group ติดตั้ง Software ใหม่โดยไม่ทดสอบให้เพียงพอ ในเวลา 45 นาทีที่ตลาดหุ้นเปิด ระบบทำธุรกรรมผิดพลาดจนสูญเสีย 460 ล้านดอลลาร์ และบริษัทล้มละลายใน 4 วัน
Software Testing ไม่ใช่แค่ขั้นตอน — มันคือการป้องกันความเสี่ยงทางธุรกิจ
ประเภทของ Software Testing
1. Unit Testing
ทดสอบอะไร: Code Unit เล็กๆ เช่น Function หรือ Method ทีละตัว ทำโดยใคร: Developer เครื่องมือ: Jest, JUnit, PyTest
ตัวอย่าง: ทดสอบว่า Function คำนวณส่วนลด 10% ให้ผลลัพธ์ถูกต้อง
2. Integration Testing
ทดสอบอะไร: การทำงานร่วมกันของหลาย Component เช่น API + Database หรือ Frontend + Backend ทำโดยใคร: Developer / QA Engineer ตัวอย่าง: ทดสอบว่าเมื่อสร้าง Order ใหม่ ระบบ Inventory ลด Stock อัตโนมัติถูกต้อง-
3. Functional Testing
ทดสอบอะไร: ทุก Feature ว่าทำงานตาม Requirements หรือไม่ ทำโดยใคร: QA Engineer วิธีการ: เขียน Test Case สำหรับทุก User Story แล้วทดสอบตามลำดับ
4. Performance Testing
ทดสอบอะไร: ระบบทำงานได้ดีภายใต้ Load จำนวนมากหรือไม่ ทำโดยใคร: QA / DevOps Engineer เครื่องมือ: JMeter, k6, Locust ตัวอย่าง: ทดสอบว่าระบบรองรับ User 1,000 คน Login พร้อมกันได้โดยไม่ Crash
5. Security Testing
ทดสอบอะไร: ช่องโหว่ด้านความปลอดภัย ทำโดยใคร: Security Engineer / Penetration Tester ตัวอย่าง: ทดสอบ SQL Injection, XSS, Unauthorized Access
6. UAT (User Acceptance Testing)
ทดสอบอะไร: Software ตรงกับ Business Requirements และใช้งานได้จริงหรือไม่ ทำโดยใคร: End User / Business Stakeholder ขั้นตอน:
- Business User ได้รับ Test Script (รายการสิ่งที่ต้องทดสอบ)
- ทดสอบใน Staging Environment (เหมือน Production แต่ไม่ใช่จริง)
- บันทึก Bug และ Feedback
- ลงนาม Sign-off เมื่อผ่าน
UAT คือ Gate สุดท้ายก่อน Go-Live ห้ามข้าม
7. Regression Testing
ทดสอบอะไร: Feature เดิมยัง Work ดีหลังจาก Update Code ใหม่ไหม? ทำโดยใคร: QA / Automated Testing ทำเมื่อ: ทุกครั้งที่มีการเปลี่ยน Code
Test Case ที่ควรมี (Critical Path)
ทุกระบบต้อง Test 100% สำหรับ Critical Path หรือ "เส้นทางที่ถ้าพัง ธุรกิจหยุด":
| ระบบ | Critical Path ที่ต้อง Test |
|---|---|
| E-commerce | Browse → Add to Cart → Checkout → Payment → Confirmation |
| Booking System | Search → Select → Fill Info → Payment → Confirmation → Email |
| CRM | Create Lead → Assign → Update Stage → Close Deal |
| HR System | Submit Leave → Approve → Deduct Balance → Payroll |
Bug Severity Levels
ไม่ใช่ทุก Bug ต้องแก้ก่อน Go-Live เรียนรู้จัดลำดับความสำคัญ:
| Severity | ความหมาย | ตัวอย่าง | ต้องแก้ก่อน Go-Live? |
|---|---|---|---|
| Critical | ระบบ Crash หรือ Data Loss | ชำระเงินแล้วไม่ได้รับ Confirmation | ✅ ต้องแก้ |
| Major | Feature ใช้งานไม่ได้ | Export PDF ล้มเหลว | ✅ ต้องแก้ |
| Minor | Feature ทำงานแต่มีปัญหาเล็กน้อย | ป้ายชื่อพิมพ์ผิด | ⚠️ แก้ก่อนถ้าทำได้ |
| Trivial | Cosmetic เท่านั้น | Icon ใหญ่กว่าปกติเล็กน้อย | ❌ แก้หลัง Launch ได้ |
Checklist ก่อน Go-Live
- Unit Test Pass ทั้งหมด
- Integration Test ผ่านทุก Critical Flow
- Performance Test: รองรับ Peak Load ได้
- Security Scan: ไม่มี Critical Vulnerability
- UAT Sign-off จาก Business Stakeholder
- Staging Deploy สำเร็จและ Stable
- Rollback Plan พร้อม ถ้าต้องการ Revert
- Monitoring/Alerting ตั้งค่าแล้ว
- Data Backup ก่อน Migrate
สรุป
Testing ไม่ใช่ขั้นตอนที่ตัดได้เพื่อประหยัดเวลาหรืองบ — มันคือการลงทุนที่ประหยัดค่าใช้จ่ายมหาศาลในอนาคต
Cost ของ Bug:
- ตอน Design: 1x
- ตอน Development: 6x
- ตอน Testing: 15x
- หลัง Launch: 100x
Software House ที่ดีจะมี QA Process ที่ชัดเจน และไม่ข้าม UAT เด็ดขาด
Adowbig มี QA Engineer ดูแลทุกโปรเจกต์ พร้อม UAT Process ที่ Structured ทำให้ Software ที่ส่งมอบมีคุณภาพสูง ดูข้อมูลเพิ่มเติม