1. บทนำและเป้าหมายสูงสุด (Mission & Principle)
การทดสอบที่มีประสิทธิภาพไม่ได้เริ่มต้นที่การเขียนโค้ด แต่เริ่มต้นที่ความเข้าใจในภาพรวมของระบบงานอย่างแท้จริง คู่มือฉบับนี้ถูกจัดทำขึ้นเพื่อให้ทุกคนในทีม (ไม่ว่าจะเป็นผู้บริหาร, ผู้จัดการโครงการ, วิศวกรซอฟต์แวร์ หรือผู้ตรวจสอบระบบ) มีความเข้าใจร่วมกันในมาตรฐานการวิเคราะห์ความต้องการ การออกแบบชุดทดสอบ และการตรวจรับรองคุณภาพระดับสากล
2. การมองภาพรวมของระบบงานทั้งหมด (Big Picture Overview)
ปัญหาที่พบบ่อยในการพัฒนาซอฟต์แวร์คือการอ่านและออกแบบชุดทดสอบแยกตามการ์ด User Story ทีละใบ เมื่อนำฟังก์ชันแต่ละส่วนมารวมกันในระบบจริง มักพบข้อผิดพลาดที่รอยต่อระหว่างระบบ หรือเกิดลำดับการคำนวณที่ผิดพลาด
- อ่านการ์ดงาน User Story แยกทีละใบโดยไม่ดูความเชื่อมโยง
- ออกแบบการทดสอบเฉพาะหน้าจอของตนเอง
- เรียงลำดับการรันตามตัวเลขรหัส (เช่น Story 1 → 2 → 3)
- ไม่ตรวจสอบว่าตัวเลขในหน้าจอมาจากระบบใดก่อนหน้า
- เกิดข้อผิดพลาดเมื่อนำแต่ละหน้าจอมาต่อกันในการทำงานจริง
- อ่านทำความเข้าใจความต้องการทั้งหมดในรอบพัฒนานั้นพร้อมกัน
- จัดกลุ่มงานที่มีความเกี่ยวข้องกันทางธุรกิจ
- หาจุดเริ่มต้นของข้อมูล (Source Data) ให้พบก่อนเสมอ
- จัดลำดับขั้นตอนการทดสอบตามการไหลของข้อมูลจริง
- ร้อยเรียงชุดทดสอบให้ทำงานต่อเนื่องกันตั้งแต่ต้นทางถึงปลายทาง
3. ลำดับขั้นตอนการทำงานจริงของระบบ (End-to-End Workflow)
ขั้นตอนที่ 1: กำหนดเงื่อนไขและตัวกรองขอบเขตงาน (Context & Selection Gate)
ผู้ใช้เลือกขอบเขตข้อมูลที่ต้องการทำงาน เช่น สาขา, ชนิดสินค้า, และรอบวันที่ต้องการ เพื่อให้ระบบเตรียมชุดข้อมูลที่ถูกต้อง
ขั้นตอนที่ 2: นำเข้าข้อมูลต้นทางและประมวลผลคำนวณแกนกลาง (Source Ingestion & Core Calculation)
ระบบดึงข้อมูลตั้งต้นจากระบบหลัก (เช่น ยอดสินค้าคงเหลือ และยอดสั่งซื้อที่ค้างรับ) มาเป็นฐานในการคำนวณความต้องการใช้จริง
ขั้นตอนที่ 3: จัดสรรสัดส่วนตามเงื่อนไขหรือโควตา (Allocation & Optimization)
นำยอดความต้องการรวมมาประมวลผลจัดสรรตามสัดส่วนหรือโควตาของแต่ละกลุ่ม พร้อมตรวจสอบแนวโน้มความเพียงพอของสินค้า
ขั้นตอนที่ 4: กระจายยอดการส่งมอบสู่ผู้ปฏิบัติการรายย่อย (Operational Distribution)
แตกย่อยยอดจัดสรรลงสู่คู่ค้าหรือผู้จัดจำหน่ายแต่ละราย พร้อมตรวจสอบกฎความคงที่: ผลรวมของคู่ค้าทุกรายต้องเท่ากับยอดรวมของสาขา 100%
ขั้นตอนที่ 5: สรุปภาพรวม ตรวจสอบความถูกต้อง และส่งมอบปลายทาง (Rollup & Delivery)
รวบรวมแนวโน้มภาพรวม ตรวจสอบตัวเลขขั้นสุดท้าย และส่งออกเป็นไฟล์รายงานเพื่อส่งต่อให้ผู้เกี่ยวข้องนำไปปฏิบัติงานจริง
4. การตรวจสอบเทียบกับแหล่งข้อมูลต้นทาง (Single Source of Truth)
ในการทดสอบระบบงานคำนวณ เราจะตรวจสอบเฉพาะตัวเลขที่แสดงบนหน้าจอปลายทางไม่ได้ เพราะหากข้อมูลที่ระบบดึงเข้ามาตั้งแต่แรกผิดพลาด ผลลัพธ์ที่คำนวณได้ก็จะผิดพลาดตามไปด้วย
ผลรวมของส่วนย่อยทุกรายการรวมกัน จะต้องเท่ากับยอดรวมของส่วนใหญ่เสมอ 100%:
ผลต่าง = ยอดรวมหลัก − ผลรวมของยอดคู่ค้าทุกราย (ต้องได้ 0 พอดีเสมอ)
5. มาตรฐานตารางเคสทดสอบ 11 คอลัมน์ (The 11-Column Standard)
| ลำดับ | ชื่อคอลัมน์มาตรฐาน | ชนิดข้อมูล | คำอธิบายและแนวทางการใช้งาน |
|---|---|---|---|
| 1 | Work Item | String |
รหัสเฉพาะของเคสทดสอบ (เช่น 101_01) หากเป็นเคสสำคัญสำหรับการสาธิต ให้ระบุ MUST DEMO |
| 2 | Title 2 | Text |
ชื่อสถานการณ์การทดสอบ ภาษาที่กระชับและสื่อพฤติกรรมของระบบชัดเจน |
| 3 | Brief description | Text |
คำอธิบายสรุปสั้นๆ เกี่ยวกับเป้าหมายของการทดสอบข้อนี้ |
| 4 | Pre_conditions | Text |
เงื่อนไขก่อนเริ่มทดสอบ เช่น สิทธิ์ของผู้ใช้ หรือสถานะของข้อมูลตั้งต้น |
| 5 | Test Steps with Test Data | List |
ขั้นตอนการทดสอบอย่างละเอียด พร้อมข้อมูลที่ต้องกรอก เรียงเป็นข้อๆ 1, 2, 3 |
| 6 | Expected test result | Text |
ผลลัพธ์ที่คาดหวัง ระบุสูตรคำนวณและตัวเลขผลลัพธ์ที่ถูกต้อง |
| 7 | Priority Level | Badge |
ระดับความสำคัญ: Critical, High, Medium, Low |
| 8 | Test Type | Category |
ประเภทของการทดสอบ: Functional, E2E, Regression, Non-Functional |
| 9 | Automation test status | Status |
สถานะการทำงานอัตโนมัติ: Automated, Manual, Draft |
| 10 | Cannot automate reason | Text |
เหตุผลที่ยังไม่สามารถทำแบบอัตโนมัติได้ (ถ้ามี) |
| 11 | Requirement Mapping | Link |
รหัสอ้างอิงของ User Story หรือหัวข้อความต้องการของระบบ |
6. โครงสร้างชุดทดสอบอัตโนมัติ (Automation Architecture)
ลำดับที่ 1 (Direct Path Priority): เข้าสู่หน้าจอโดยตรงผ่าน URL ที่กำหนดไว้ เพื่อความรวดเร็วและแม่นยำสูงสุด
ลำดับที่ 2 (Auto-Crawl Fallback): หาก URL เปลี่ยนแปลง ระบบจะค้นหาและคลิกผ่านเมนูจริงบนหน้าจออัตโนมัติ เพื่อให้การทดสอบทำงานต่อเนื่องได้ไม่หยุดชะงัก
อันดับ 1: อ้างอิงจากข้อความและปุ่มที่ผู้ใช้มองเห็นจริง (เช่น ชื่อปุ่ม, ป้ายกำกับ)
อันดับ 2: อ้างอิงจากรหัสข้อมูลเฉพาะ (เช่น data-testid)
ข้อควรระวัง: หลีกเลี่ยงการอ้างอิงตำแหน่งด้วยชื่อคลาสสีหรือรูปแบบความสวยงามที่อาจเปลี่ยนแปลงบ่อย