เพิ่งคุยกับทีมที่นำ Test Automation มาใช้ในการพัฒนา Software
โดยข้อมูลที่ได้รับมาก็คือ
เราคงต้องเลิก หรือ ปิดการทำทดสอบแบบอัตโนมัติแล้ว
เพราะว่า การทดสอบมันไม่เสถียรเลย
ซึ่งจะนำมาใช้อีกครั้ง เมื่อทำการแก้ไขให้มันทำงานเสถียรก่อน !!
คำถามที่เกิดขึ้นมาทันทีก็คือ ปัญหาที่แท้จริงมันคืออะไรกันแน่ ?
เนื่องจากระบบงานต้องทำงานตลอด 24 ชั่วโมง
แน่นอนว่า ต้องมีคนคอย support ตลอดเวลา บ่อยครั้งที่ระบบจะมีปัญหาช่วงกลางดึก (บ่อยมาก ๆ ) แถมชอบเกิดขึ้นช่วงวันหยุดอีกด้วย สรุปได้เลยว่า งานแม่ง ..... มากมาย !! ดังนั้นจึงนำเอา Test Automation มาช่วยทดสอบระบบทุก ๆ ชั่วโมง ซึ่งเป็น Functional หรือ UI testing นั่นเอง เพื่อช่วยตรวจสอบว่า ระบบยังคงทำงานได้อย่างถูกต้องตามที่คาดหวังหรือไม่ แต่ว่ามีอยู่วันหนึ่งช่วงกลางดึก Test Automation ทำการแจ้งบอกว่าการทดสอบมัน fail แต่เมื่อทีม support เข้ามาตรวจสอบ และทดสอบใช้งานระบบแล้ว พบว่าระบบไม่มีปัญหาแต่อย่างใด ซึ่งเกิดเหตุการณ์แบบนี้บ่อยมาก ๆ บรรดาหัวหน้าทีม และ manager ต่าง ๆ จึงสรุปปัญหาได้ดังนี้- ระบบ Test Automation มันไม่เสถียร
- ระบบ Test Automation มันทำงานผิดพลาดตลอด
- มันไม่ยุติธรรมต่อทีม support ที่ต้องตื่นมาตรวจสอบปัญหาเหล่านี้ ทั้ง ๆ ที่มันไม่มีปัญหา
แต่เดี๋ยวก่อนนะ เรามาหาความจริงกันหน่อยดีไหม ?
ระบบ Test Automation มันไม่เสถียร ?
จากการพูดคุยในรายละเอียดพบว่า ใช้ Selenium WebDriver สำหรับการทดสอบ โดยผลจากการทดสอบพบว่า บางหน้าใช้เวลาในการดึงข้อมูลมาแสดงผลมากกว่า 10 วินาที !! ซึ่ง Test Automation ที่สร้างไว้ก็รอไปเรื่อย ๆ จนสุดท้ายก็ยังดึงข้อมูล และ แสดงผลไม่เสร็จ คำถามที่เกิดขึ้นมาก็คือ ปัญหาแบบนี้มันคือ Test Automation มันไม่เสถียร หรือ ระบบงานมันไม่เสถียรกันแน่ ? ซึ่งข้อมูลที่ใช้มีทั้งรูปภาพที่ capture ไว้ พร้อม VDO แต่ไม่นำมาใช้งาน และ นำมาวิเคราะห์กัน คำถามที่ถามกลับไปยังทีมคือ เรายอมรับให้ระบบงานใช้เวลาดึงข้อมูลนานเกิน 10 วินาทีกันเลยใช่ไหม ? คำตอบที่ได้รับกลับมาก็คือ ใช่แล้ว !!ลองคิดดูสิว่า ลูกค้า หรือ ผู้ใช้งานระบบจะรอไหมนะ ? อาจจะมีแต่น้อยหรือเปล่านะปัญหาจริง ๆ ก็คือ ระบบงานมันทำงานช้า ระบบงานมันดึงข้อมูลช้า ดังนั้นได้เวลาแก้ไขปัญหาแล้วนะ อย่าหนีปัญหากันสิ !!
ระบบ Test Automation มันทำงานผิดพลาดตลอด !!
ข้อมูลที่ได้รับมาก็คือ จะผิดพลาดประมาณ 1 ใน 10 ครั้งของการทดสอบ ซึ่งผมสรุปได้เลยว่า มันไม่ได้ทำงานผิดพลาดบ่อยแบบที่ว่ากันนะ โดยแนวทางการแก้ไขปัญหาแบบง่าย ๆ ที่เกิดขึ้นมา ประกอบไปด้วย- เพิ่ม Timeout ไปสิ
- ใส่การ retry ไปสิ
ดังนั้นไปแก้ไขปัญหาที่ต้นเหตุได้แล้ว
มันไม่ยุติธรรมต่อทีม support ที่ต้องตื่นมาตรวจสอบปัญหาเหล่านี้ ทั้ง ๆ ที่มันไม่มีปัญหา
ตอบได้เลยว่า ใช่แล้ว ไม่มีใครอยากตื่นกลางดึก เพื่อมาแก้ไขปัญหาจากสิ่งที่ตนเองไม่ได้ทำหรอกนะ แต่มันต้องทำ เพราะว่าเป็นงานที่ถูกจ้างมานั่นเอง แน่นอนว่า มันทำให้สุขภาพย่ำแย่ มันทำให้เราโกรธ แต่ควรไปลงที่ปัญหาจริง ๆ สิ ไม่ใช่ไปลงที่ Test Automation ปัญหาจริง ๆ คืออะไรบ้าง ? เขียน code ได้แย่ เขียน test ได้ห่วย Server ห่วย Network แย่สุดท้ายแล้ว ก่อนจะเลิกใช้งาน Test Automation
ช่วยคิด วิเคราะห์ แยกแยะก่อนว่า- วิธีการ และ เครื่องมือที่นำมาใช้สร้างนั้น มันเหมาะสม หรือ มีปัญหาหรือไม่ ?
- ต้องทำการพิสูจน์ให้ได้ว่า Test Automation มันแย่ หรือ ไม่แย่ ช่วย หรือ ไม่ช่วย ดี หรือ ไม่ดี ?
- ถ้า Test Automation มันทำงานถูกต้องของมันแล้ว ดังนั้น สิ่งต่อไปที่ต้องแก้ไขคือ การแก้ไขระบบ และ code นั่นเอง
- ทาง Manager ของคุณอาจจะไม่เห็นด้วยกับคุณ แต่สิ่งที่คุณทำได้ก็คือ นำข้อมูลต่าง ๆ ออกมาเพื่อสนับสนุนเหตุผลของคุณให้ได้มาก และ ดีที่สุด ว่าสาเหตุที่แท้จริงมันเกิดมาจากอะไร