สรุป Regression Test คืออะไร? พร้อมเทคนิคการเลือก Test Case ให้มีประสิทธิภาพตามหลัก 80/20
ในการพัฒนาซอฟต์แวร์ เมื่อมีการเปลี่ยนแปลงเกิดขึ้นในระบบ สิ่งที่ชาว QA หรือ Software Tester ต้องเผชิญคือการตรวจสอบว่าสิ่งที่เปลี่ยนไปนั้นส่งผลกระทบต่อส่วนเดิมที่มีอยู่หรือไม่ ซึ่งกระบวนการนี้เรียกว่า Regression Test นั่นเอง
Regression Test คืออะไร?
โดยนิยามแล้ว Regression Test คือการทดสอบเพื่อหา Bug (Defect) หรือผลกระทบ (Impact) ที่เกิดจากการเปลี่ยนแปลง (Change)
ซึ่งในโลกของการพัฒนาซอฟต์แวร์ การเปลี่ยนแปลงสามารถเกิดขึ้นได้จาก 2 ปัจจัยหลัก คือ:
1.การเพิ่มฟีเจอร์ใหม่ (Add new feature) เข้าไปในระบบ
2.การแก้ไขBug (Bug fix) หรือการปรับปรุงโค้ดต่าง ๆ
ดังนั้น ในการทดสอบซอฟต์แวร์จึงมักประกอบด้วย 2 ส่วนสำคัญ คือการทดสอบฟีเจอร์ใหม่ว่าทำงานได้ปกติหรือไม่ และการทำ Verification Test (หรือ Regression Test) เพื่อตรวจสอบว่าฟีเจอร์ปัจจุบัน (Existing feature) ยังคงทำงานได้ดีและไม่มีผลข้างเคียง (Side effect) จากการเปลี่ยนแปลงนั้น
เทคนิคการเลือก Test Case: ไม่จำเป็นต้องเทสทุกอย่าง
ปัญหาที่พบบ่อยคือ หากเรามี Test Case เป็นหมื่นเป็นแสนรายการ เราควรเลือกเทสอย่างไร?
แหล่งข้อมูลแนะนำว่า ควรเลือกเฉพาะฟังก์ชันหรือฟีเจอร์ที่เป็นระดับวิกฤต (Critical function) มาไว้ใน Regression Test เท่านั้น
ตัวอย่างเช่น หากเราทดสอบแอปพลิเคชัน E-commerce อย่าง Shopee เราอาจมีขั้นตอนที่ซับซ้อนได้เป็นแสนรูปแบบ เช่น ล็อกอิน เลือกของ กดจ่ายเงิน แล้วเปลี่ยนใจยกเลิก ทำซ้ำไปมา 5 รอบก่อนจะจ่ายจริง ซึ่งหากเกิดBugในกรณีที่ซับซ้อนมาก ๆ เช่นนี้ ผลกระทบต่อธุรกิจอาจไม่รุนแรงเท่ากับเคสมาตรฐาน
ในทางตรงกันข้าม หากเราเลือกทดสอบ Simple Case ที่เป็นหัวใจหลัก เช่น การค้นหาสินค้า เพิ่มลงตะกร้า และจ่ายเงินด้วยบัตรเครดิต เคสเพียงเคสเดียวนี้อาจครอบคลุมปริมาณการใช้งาน (Traffic) ของผู้ใช้จริงถึง 40-50% และหากรวมการจ่ายเงินด้วยช่องทางอื่น ๆ เข้าไป อาจครอบคลุมได้ถึง 70-80% เลยทีเดียว
กฎ 80/20 กับการทดสอบซอฟต์แวร์
หัวใจสำคัญของการทำ Regression Test คือการนำ กฎ 80/20 (Pareto Principle) มาประยุกต์ใช้นั่นคือ:
ใช้แรง (Effort) เพียง 20% ในการเลือก Test Case เพื่อให้ได้ผลลัพธ์ที่ ครอบคลุมความเสี่ยง (Impact) ถึง 80% เราไม่ควรพยายามทดสอบทุกฟังก์ชัน แต่ควรเน้นไปที่ฟังก์ชันที่หากเกิดBugขึ้นมาแล้วจะสร้างความเสียหายอย่างหนักให้กับธุรกิจ (Business Impact)
เช่น ระบบจ่ายเงินล่มเพียงไม่กี่นาที อาจทำให้บริษัทสูญเสียรายได้มหาศาล
สรุป
การเลือก Test Case สำหรับ Regression Test ควรพิจารณาจาก 3 ปัจจัยหลัก ได้แก่:
-Customer Traffic: ดูว่าส่วนไหนที่ลูกค้าใช้งานเยอะที่สุด
-Usage Patterns: วิธีการใช้งานหลัก ๆ ของลูกค้า
-Business Impact: ผลกระทบต่อธุรกิจหากฟังก์ชันนั้นทำงานผิดพลาด
การทำเช่นนี้จะช่วยให้เราสามารถควบคุมคุณภาพของซอฟต์แวร์ได้อย่างมีประสิทธิภาพ โดยใช้เวลาและทรัพยากรที่มีอยู่อย่างคุ้มค่าที่สุด
