ข้อผิดพลาด 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 มาได้ อย่าเพิ่งหยุด จงเป็นคนที่ตั้งคำถามว่า: "ถ้าฉันอัปโหลดไฟล์ที่แย่ที่สุดเท่าที่จะจินตนาการได้ล่ะ จะเกิดอะไรขึ้น?"

แล้วก็ลงมือทำซะ

Source: https://dev.to/jaswanth_m_ab71bf22ec8b0/1000-errors-one-google-sheet-and-five-hours-i-will-never-get-back-4okl

Optional learning community: https://t.me/GyaanSetuAi