เช้านี้อ่านเจอบทความเรื่อง What is Regression Testing ?
ทำการอธิบายเกี่ยวกับ Regression testing ว่าคืออะไร ?
มีเป้าหมายเพื่ออะไร ?
และจะลงมือทำการทดสอบเมื่อใด ?
จึงทำการสรุปการอ่านไว้นิดหน่อย
Regression Testing คืออะไร ?
เป็นการทดสอบชนิดหนึ่งใน Functional testing
ใช้สำหรับการตรวจสอบปัญหาที่เกิดขึ้นมาจาก
การเพิ่มหรือแก้ไข code ของระบบ
เพื่อหาว่าต้นเหตุของปัญหาอยู่ที่ไหน
เพื่อยืนยันว่าการเพิ่มหรือแก้ไขสามารถแก้ไขปัญหาได้
หรือไม่ส่งผลกระทบต่อการทำงานของระบบ
คำถามต่อมาคือ Functional testing มันคืออะไรล่ะ ?
เป็นการทดสอบ และ เป็นขั้นตอนที่ถูกสร้างขึ้นมาเพื่อ
ใช้ยืนยันว่าแต่ component ของระบบ
ทำงานร่วมกันได้อย่างถูกต้องตามความต้องการที่ตกลงไว้ร่วมกัน
โดยเน้นที่การทดสอบจาก interface ของระบบงาน
เพื่อทำให้มั่นใจว่าระบบงานนั้นสามารถทำงานได้อย่างเหมาะสมกับผู้ใช้งาน
เช่น
ถ้าเป็นระบบ Web application ก็เน้นไปที่ User Interface บน browser
ถ้าเป็นระบบ API ก็เน้นไปที่การใช้งานผ่าน API
Functional testing ประกอบไปด้วยการทดสอบชนิดต่าง ๆ ดังนี้
- Smoke testing
- Sanity testing
- Integration testing
- Acceptance testing
- Regression testing
คำถามต่อมาคือ ทำ Regression testing ตอนไหน ?
Regression testing เป็นการทดสอบที่สำคัญมาก ๆ ของการพัฒนา software
จะลงมือทำเมื่อ
- ทำการ release ระบบ หรือ feature ใหม่ ๆ
- เมื่อทำการแก้ไขข้อผิดพลาดต่าง ๆ ที่สำคัญ
ถ้าจะให้ดีมาก ๆ ชุดการทดสอบของ Regression testing นั้น
ควรทำการทดสอบอยู่อย่างบ่อย ๆ
ควรทำการทดสอบอย่างรวดเร็ว
เพื่อทำให้เรารู้ปัญหาได้อย่างรวดเร็ว
เพื่อทำให้เราแก้ไขปัญหาได้อย่างรวดเร็ว
ถ้าจะให้ดีมากขึ้นไปอีก ให้เริ่มต้นทำตั้งแต่วันแรกของการพัฒนาเลย
เริ่มจากง่าย ๆ ก่อนเป็นดีที่สุด
บางคนอาจจะบอกว่า เป็นไปไม่ได้หรอก
แต่ผมขอแนะนำว่า ให้ลองทำเถอะนะ
คำว่าเป็นไปไม่ได้ มันคืออะไร ?
ไม่เคยทำ หรือ ทำไม่เป็น หรือ …
ดังนั้นลงมือทำเถอะครับ ถ้าไม่ลงมือทำสักทีจะทำเป็นหรือไง ?
เนื่องจากทุกการเปลี่ยนแปลงของระบบล้วนมีความเสี่ยง !!
ดังนั้นสิ่งที่นักพัฒนาต้องตอบให้ได้คือ
- สิ่งที่สร้างและแก้ไขไปนั้น มันทำงานได้อย่างถูกต้องหรือไม่ ?
- สิ่งที่สร้างและแก้ไขไปนั้น มันไม่ส่งผลกระทบต่อการทำงานในส่วนอื่น ๆ หรือไม่ ?
ยิ่งถ้าทีมพัฒนามีระบบพวก Continuous Integration และ Continuous Delivery ด้วยแล้ว
แนะนำให้นำเอา Regression testing เข้ามาอยู่ในระบบนี้เสมอ
เพราะว่าจะทำการทดสอบทุกครั้ง
เมื่อ code มีการเปลี่ยนแปลง
ซึ่งมันแจ่มมาก ๆ และควรทำอย่างแรงนะครับ
แสดงการทำงานดังรูป
สุดท้ายแล้ว ถ้าเราต้องการป้องกันความผิดพลาด
ก็ต้องทำการค้นหาความผิดพลาดให้รวดเร็วที่สุดนั่นเอง
เนื่องจากยิ่งค้นหาได้ช้า ค่าใช้จ่ายสำหรับการแก้ไขก็ยิ่งแพงนะครับ
และลด ละ เลิกการ debug เถอะนะ
หรือว่าคนจริงต้องแก้ไขข้อผิดพลาดบน Production กันนะ !!