Screen Shot 2558-12-13 at 2.48.09 PM
เพิ่งคุยกับทีมที่นำ Test Automation มาใช้ในการพัฒนา Software
โดยข้อมูลที่ได้รับมาก็คือ
เราคงต้องเลิก หรือ ปิดการทำทดสอบแบบอัตโนมัติแล้ว
เพราะว่า การทดสอบมันไม่เสถียรเลย
ซึ่งจะนำมาใช้อีกครั้ง เมื่อทำการแก้ไขให้มันทำงานเสถียรก่อน !!

คำถามที่เกิดขึ้นมาทันทีก็คือ ปัญหาที่แท้จริงมันคืออะไรกันแน่ ?

เนื่องจากระบบงานต้องทำงานตลอด 24 ชั่วโมง

แน่นอนว่า ต้องมีคนคอย support ตลอดเวลา
บ่อยครั้งที่ระบบจะมีปัญหาช่วงกลางดึก (บ่อยมาก ๆ )
แถมชอบเกิดขึ้นช่วงวันหยุดอีกด้วย
สรุปได้เลยว่า งานแม่ง ….. มากมาย !!

ดังนั้นจึงนำเอา Test Automation มาช่วยทดสอบระบบทุก ๆ ชั่วโมง
ซึ่งเป็น Functional หรือ UI testing นั่นเอง
เพื่อช่วยตรวจสอบว่า
ระบบยังคงทำงานได้อย่างถูกต้องตามที่คาดหวังหรือไม่

แต่ว่ามีอยู่วันหนึ่งช่วงกลางดึก
Test Automation ทำการแจ้งบอกว่าการทดสอบมัน fail
แต่เมื่อทีม support เข้ามาตรวจสอบ
และทดสอบใช้งานระบบแล้ว พบว่าระบบไม่มีปัญหาแต่อย่างใด
ซึ่งเกิดเหตุการณ์แบบนี้บ่อยมาก ๆ

บรรดาหัวหน้าทีม และ manager ต่าง ๆ จึงสรุปปัญหาได้ดังนี้

  • ระบบ Test Automation มันไม่เสถียร
  • ระบบ Test Automation มันทำงานผิดพลาดตลอด
  • มันไม่ยุติธรรมต่อทีม support ที่ต้องตื่นมาตรวจสอบปัญหาเหล่านี้ ทั้ง ๆ ที่มันไม่มีปัญหา

ทำให้ได้ข้อสรุปของการแก้ไขปัญหา คือ ปิดการทำงานของ Test Automation ซะเถอะ !!

แต่เดี๋ยวก่อนนะ เรามาหาความจริงกันหน่อยดีไหม ?

ระบบ Test Automation มันไม่เสถียร ?

จากการพูดคุยในรายละเอียดพบว่า
ใช้ Selenium WebDriver สำหรับการทดสอบ

โดยผลจากการทดสอบพบว่า
บางหน้าใช้เวลาในการดึงข้อมูลมาแสดงผลมากกว่า 10 วินาที !!
ซึ่ง Test Automation ที่สร้างไว้ก็รอไปเรื่อย ๆ
จนสุดท้ายก็ยังดึงข้อมูล และ แสดงผลไม่เสร็จ

คำถามที่เกิดขึ้นมาก็คือ
ปัญหาแบบนี้มันคือ Test Automation มันไม่เสถียร หรือ ระบบงานมันไม่เสถียรกันแน่ ?

ซึ่งข้อมูลที่ใช้มีทั้งรูปภาพที่ capture ไว้ พร้อม VDO
แต่ไม่นำมาใช้งาน และ นำมาวิเคราะห์กัน

คำถามที่ถามกลับไปยังทีมคือ
เรายอมรับให้ระบบงานใช้เวลาดึงข้อมูลนานเกิน 10 วินาทีกันเลยใช่ไหม ?
คำตอบที่ได้รับกลับมาก็คือ
ใช่แล้ว !!

ลองคิดดูสิว่า ลูกค้า หรือ ผู้ใช้งานระบบจะรอไหมนะ ?
อาจจะมีแต่น้อยหรือเปล่านะ

ปัญหาจริง ๆ ก็คือ
ระบบงานมันทำงานช้า ระบบงานมันดึงข้อมูลช้า
ดังนั้นได้เวลาแก้ไขปัญหาแล้วนะ
อย่าหนีปัญหากันสิ !!

ระบบ Test Automation มันทำงานผิดพลาดตลอด !!

ข้อมูลที่ได้รับมาก็คือ จะผิดพลาดประมาณ 1 ใน 10 ครั้งของการทดสอบ
ซึ่งผมสรุปได้เลยว่า มันไม่ได้ทำงานผิดพลาดบ่อยแบบที่ว่ากันนะ

โดยแนวทางการแก้ไขปัญหาแบบง่าย ๆ ที่เกิดขึ้นมา ประกอบไปด้วย

  • เพิ่ม Timeout ไปสิ
  • ใส่การ retry ไปสิ

แต่ลองคิดแบบใช้เหตุผลหน่อยสิ
เรากำลังจะแก้ไขปัญหา หรือ กำลังซ่อน หรือ เพิ่มปัญหาใหม่เข้ามายังระบบ

ลองคิดดูสิว่า
ตอนนี้ก็มี Timeout เป็น 10 วินาทีแล้ว
ระบบการทดสอบยังทำงานผิดพลาดเลยนะ
ยังจะเพิ่ม Timeout กันอีกหรือไง ?

หรือลองคิดดูสิว่า
ผู้ใช้งานจะทำการ retry ระบบที่มันช้า ๆ หรือไม่ ?
ถ้าไม่ ระบบการทดสอบต้องทำด้วยหรือ

ดังนั้นไปแก้ไขปัญหาที่ต้นเหตุได้แล้ว

มันไม่ยุติธรรมต่อทีม support ที่ต้องตื่นมาตรวจสอบปัญหาเหล่านี้ ทั้ง ๆ ที่มันไม่มีปัญหา

ตอบได้เลยว่า ใช่แล้ว
ไม่มีใครอยากตื่นกลางดึก
เพื่อมาแก้ไขปัญหาจากสิ่งที่ตนเองไม่ได้ทำหรอกนะ
แต่มันต้องทำ เพราะว่าเป็นงานที่ถูกจ้างมานั่นเอง

แน่นอนว่า มันทำให้สุขภาพย่ำแย่
มันทำให้เราโกรธ
แต่ควรไปลงที่ปัญหาจริง ๆ สิ ไม่ใช่ไปลงที่ Test Automation
ปัญหาจริง ๆ คืออะไรบ้าง ?
เขียน code ได้แย่
เขียน test ได้ห่วย
Server ห่วย
Network แย่

สุดท้ายแล้ว ก่อนจะเลิกใช้งาน Test Automation

ช่วยคิด วิเคราะห์ แยกแยะก่อนว่า

  • วิธีการ และ เครื่องมือที่นำมาใช้สร้างนั้น มันเหมาะสม หรือ มีปัญหาหรือไม่ ?
  • ต้องทำการพิสูจน์ให้ได้ว่า Test Automation มันแย่ หรือ ไม่แย่ ช่วย หรือ ไม่ช่วย ดี หรือ ไม่ดี ?
  • ถ้า Test Automation มันทำงานถูกต้องของมันแล้ว ดังนั้น สิ่งต่อไปที่ต้องแก้ไขคือ การแก้ไขระบบ และ code นั่นเอง
  • ทาง Manager ของคุณอาจจะไม่เห็นด้วยกับคุณ แต่สิ่งที่คุณทำได้ก็คือ นำข้อมูลต่าง ๆ ออกมาเพื่อสนับสนุนเหตุผลของคุณให้ได้มาก และ ดีที่สุด ว่าสาเหตุที่แท้จริงมันเกิดมาจากอะไร

สุดท้ายควรจะต้อง Test early, Test often นะครับ
เพื่อป้องกันไม่ให้เกิดเหตุการณ์แบบนี้กัน
หรือถ้าเกิดขึ้นเราจะรู้ได้ตั้งแต่เนิ่น ๆ ไม่ใช่มารู้กันบน production