PlusMagi's Blog By Pitt Phunsanit Backend เทคนิคการทำ Manual Testing (Black-box/White-box Testing, Boundary Value Analysis, Equivalence Partitioning)

เทคนิคการทำ Manual Testing (Black-box/White-box Testing, Boundary Value Analysis, Equivalence Partitioning)

ในฐานะ System Architect การรับประกันคุณภาพ (Quality Assurance) ของระบบฐานข้อมูลถือเป็นรากฐานสำคัญของความสำเร็จทางธุรกิจ ไม่ว่าจะเป็นการจัดการข้อมูลลูกค้า ระบบการเงิน หรือ Inventory การทดสอบระบบด้วยมือ (Manual Testing) จึงไม่ใช่แค่การกดปุ่ม แต่คือการใช้ชุดกลยุทธ์เชิงลึกเพื่อค้นหาช่องโหว่และข้อบกพร่องที่อาจเกิดขึ้นในโค้ดหรือตรรกะของฐานข้อมูล

1. การจำแนกมุมมอง: Black-box vs. White-box Testing

การทดสอบระบบฐานข้อมูลที่ซับซ้อนจำเป็นต้องมองจากหลายมุมมอง:

Black-box Testing (มุมมองผู้ใช้งาน)

เทคนิคนี้มุ่งเน้นที่การตรวจสอบฟังก์ชันการทำงาน (Functionality) จากภายนอก โดยไม่จำเป็นต้องรู้โครงสร้างโค้ดภายใน (SQL Query) เราจะทดสอบว่าเมื่อป้อนข้อมูลที่ถูกต้อง (Valid Input) หรือข้อมูลที่ไม่ถูกต้อง (Invalid Input) ระบบจะตอบสนองตามที่กำหนดหรือไม่

ตัวอย่างใน PostgreSQL: สมมติเรามีฟังก์ชัน `calculate_tax(amount)` เราจะทดสอบโดยการเรียกใช้ฟังก์ชันด้วยค่าต่างๆ โดยไม่สนใจว่าภายในฟังก์ชันใช้สูตรอะไร

SQL

-- Black-box Test: ตรวจสอบการคำนวณภาษีด้วยยอดเงินที่แตกต่างกัน<br>SELECT calculate_tax(100.00); -- ควรได้ผลลัพธ์ที่ถูกต้อง<br>SELECT calculate_tax(-50.00); -- ควรเกิด Error หรือจัดการค่าลบได้

White-box Testing (มุมมองนักพัฒนา)

เทคนิคนี้ต้องอาศัยความเข้าใจในโครงสร้างโค้ด (SQL Logic) อย่างลึกซึ้ง เพื่อตรวจสอบทุกเส้นทาง (Path Coverage) ของตรรกะทางธุรกิจ เช่น การตรวจสอบว่าทุกเงื่อนไข `CASE WHEN` หรือทุก Branch ของ Transaction ถูกเรียกใช้หรือไม่

SQL

-- White-box Test: ตรวจสอบทุก Path ของการอัปเดตสถานะสินค้า<br>UPDATE products SET status = CASE<br>    WHEN quantity < 10 THEN 'LOW_STOCK'<br>    WHEN quantity = 0 THEN 'OUT_OF_STOCK'<br>    ELSE 'IN_STOCK'<br>END WHERE product_id = 1;

2. เทคนิคการออกแบบกรณีทดสอบขั้นสูง

เมื่อทราบมุมมองแล้ว เราต้องใช้เทคนิคเหล่านี้ในการออกแบบ Test Case ให้ครอบคลุม:

Equivalence Partitioning (EP)

หลักการคือการแบ่งชุดข้อมูลอินพุตขนาดใหญ่ให้เป็นกลุ่มๆ (Partitions) ที่คาดว่าจะทำงานเหมือนกัน โดยเราไม่จำเป็นต้องทดสอบทุกค่า แต่เลือกค่าตัวแทน (Representative Value) จากแต่ละกลุ่มก็เพียงพอแล้ว

ตัวอย่างใน PostgreSQL: หากเรามีคอลัมน์ `discount_rate` ที่รับค่าได้ 0 ถึง 100% เราจะแบ่งเป็น 3 กลุ่ม (Partition): 1. ค่าที่ถูกต้อง (0-100) 2. ค่าติดลบ (< 0) 3. ค่าเกิน ( > 100)

SQL

-- EP Test: ทดสอบค่าตัวแทนจากแต่ละ Partition<br>SELECT * FROM orders WHERE discount_rate = 0.10; -- Valid<br>SELECT * FROM orders WHERE discount_rate = -0.05; -- Invalid<br>SELECT * FROM orders WHERE discount_rate = 1.5; -- Invalid

Boundary Value Analysis (BVA)

เทคนิคนี้เน้นการทดสอบที่ขอบเขต (Boundary) ของแต่ละ Partition เนื่องจากข้อผิดพลาดมักเกิดขึ้นที่จุดเปลี่ยนผ่าน (Edge Cases) เช่น การทดสอบอายุที่กำหนดให้ 18 ถึง 65 ปี เราต้องทดสอบค่า 17, 18, 65, และ 66

ตัวอย่างใน PostgreSQL: การตรวจสอบช่วงอายุที่ต้องอยู่ระหว่าง 18 ถึง 65 ปี

SQL

-- BVA Test: ตรวจสอบขอบเขตอายุ (18-65)<br>SELECT * FROM users WHERE age = 17; -- Boundary Below<br>SELECT * FROM users WHERE age = 18; -- Boundary Start<br>SELECT * FROM users WHERE age = 65; -- Boundary End<br>SELECT * FROM users WHERE age = 66; -- Boundary Above

บทสรุป

การทำ Manual Testing ที่มีประสิทธิภาพในระบบ PostgreSQL ไม่ได้อาศัยเพียงแค่ความพยายาม แต่ต้องอาศัยการประยุกต์ใช้กลยุทธ์อย่าง Black-box และ White-box ควบคู่ไปกับการออกแบบ Test Case ด้วย EP และ BVA การทำเช่นนี้จะช่วยให้มั่นใจได้ว่าระบบฐานข้อมูลของเรามีความแข็งแกร่ง เชื่อถือได้ และพร้อมรองรับการขยายตัวของธุรกิจได้อย่างสมบูรณ์

Exit mobile version