ข้อผิดพลาด 1,000 รายการ, Google Sheet หนึ่งไฟล์ และ 5 ชั่วโมงที่ผมจะไม่มีวันได้คืนมา
ทุกบั๊กมีเรื่องราวเสมอ และส่วนใหญ่มักจะเริ่มต้นด้วยประโยคที่ว่า: "เครื่องผมก็ทำงานปกตินี่นา"
พวกเรากำลังทดสอบฟีเจอร์นำเข้าข้อมูล (data import) ให้กับบริษัทหาลูกค้า (lead generation) ฟีเจอร์นี้ดูเหมือนจะง่ายมาก แค่คลิกปุ่มนำเข้า อัปโหลดสเปรดชีต แล้วระบบก็จะโหลดรายชื่อผู้ติดต่อ ทุกคนต่างคิดว่ามันทำงานได้ปกติ
แต่ความเชื่อนั้นแหละคือกับดัก
Tester มีหน้าที่ทำลายความเชื่อเหล่านั้น "happy path" มักจะหลอกคุณเสมอ
ถ้าเราใช้ไฟล์ Excel ที่สะอาด การนำเข้าข้อมูลก็จะผ่านฉลุย เราอาจจะไปกินข้าวเที่ยงกันได้ หรืออาจจะปล่อยฟีเจอร์นี้ออกไปได้เลย แต่ลูกค้าจะไปเจอบั๊กนี้ในเช้าวันจันทร์ตอนที่ระบบใช้งานจริง (production) ไปแล้ว
ปัญหาคือ Google Sheet
ผู้ใช้งานจริงไม่ได้ใช้ไฟล์ Excel ที่สะอาดเรียบร้อย พวกเขาใช้ Google Sheet ที่ยุ่งเหยิง และพวกเขาคาดหวังให้ระบบจัดการกับความวุ่นวายเหล่านั้นได้
เมื่อเราอัปโหลดข้อมูลจาก Google Sheet ระบบก็ล่ม เราเห็นข้อผิดพลาดมากกว่า 1,000 รายการ หน้าจอเต็มไปด้วย error ปุ่มเดิมและประเภทข้อมูลเดิมกลับทำให้ระบบพังพินาศ เพียงเพราะรูปแบบต้นทางเปลี่ยนไปเท่านั้น
เรากลับไปทดสอบด้วย Excel เพิ่มเติม เราลองผสมแถวที่ข้อมูลถูกต้องและไม่ถูกต้องเข้าด้วยกัน ระบบจัดการได้ดี มันข้ามแถวที่เสียและทำงานต่อไปได้
จากนั้นเราจึงลองความวุ่นวายแบบโลกแห่งความเป็นจริง เราอัปโหลดไฟล์ขนาดใหญ่ที่มีหลายร้อยแถว ส่วนใหญ่เป็นข้อมูลขยะ มีเพียงไม่กี่แถวเท่านั้นที่ใช้งานได้
ระบบพังยับเยิน ตรรกะการตรวจสอบข้อมูล (validation logic) ทำงานได้ดีกับแถวที่เสียเพียงไม่กี่แถว แต่มันกลับตายสนิทเมื่อต้องเจอกับกองภูเขาข้อมูลที่ผิดพลาด
เราเสียเวลาไป 5 ชั่วโมงเพื่อหาสาเหตุที่แท้จริง (root cause) เราจ้องหน้าจอ รันการทดสอบซ้ำ แล้วก็โทษทั้งไฟล์ โทษทั้งเบราว์เซอร์ และโทษแม้กระทั่งกาแฟ
5 ชั่วโมงนั้นถือว่าราคาถูกมาก เพราะทางเลือกอื่นคือการปล่อยให้ลูกค้าต้องเสียเวลาช่วงบ่ายและเสียความเชื่อมั่นในผลิตภัณฑ์ของเรา คุณจ่ายค่าบั๊กในช่วงการทดสอบด้วย "เวลา" แต่คุณต้องจ่ายค่าบั๊กในช่วงใช้งานจริงด้วย "ลูกค้า"
ผมจะเลือกเสียเวลา 5 ชั่วโมงนั้นเสมอ
Tester ที่ดีจะไม่ถามว่าฟีเจอร์นี้ทำงานได้ไหม แต่จะถามว่าทำอย่างไรถึงจะทำให้มันพังได้
เลิกคิดแบบนักพัฒนา (developer) แล้วเริ่มคิดแบบคนเหล่านี้:
- ผู้ใช้ที่ขี้เกียจและอัปโหลดไฟล์ผิดฟอร์แมต
- ผู้ใช้ที่สร้างความวุ่นวายด้วยการผสานเซลล์ (merged cells) และทิ้งแถวว่างไว้
- ผู้ใช้ที่อัปโหลดข้อมูลจำนวนมาก โดยมีข้อมูลขยะ 4,000 รายการ แทนที่จะเป็นข้อมูลสะอาดๆ 10 รายการ
- ตัวแสบที่ทำในสิ่งที่ "ไม่ควรทำ" อย่างแม่นยำ
ซอฟต์แวร์มักจะพังเพราะข้อมูลนำเข้า (inputs) ที่คุณไม่ได้คาดคิด
ฟีเจอร์ที่ดู "เรียบง่าย" ที่สุด มักจะเป็นฟีเจอร์ที่อันตรายที่สุด ปุ่มนำเข้า, ช่องค้นหา และฟอร์มติดต่อ ดูเหมือนจะไม่มีพิษมีภัย แต่มันไม่ใช่เลย
ถ้าฟีเจอร์ไหนผ่าน happy path มาได้ อย่าเพิ่งหยุด จงเป็นคนที่ตั้งคำถามว่า: "ถ้าฉันอัปโหลดไฟล์ที่แย่ที่สุดเท่าที่จะจินตนาการได้ล่ะ จะเกิดอะไรขึ้น?"
แล้วก็ลงมือทำซะ
Optional learning community: https://t.me/GyaanSetuAi
