1,000 ข้อผิดพลาด, Google Sheet เพียงแผ่นเดียว และ 5 ชั่วโมงที่ผมจะไม่มีวันได้คืนมา

ทุกบั๊กมีเรื่องราวเสมอ และเรื่องนี้เริ่มต้นด้วยคำโกหกที่ว่า: "เครื่องผมก็ทำงานได้ปกตินี่นา"

เรากำลังทดสอบฟีเจอร์การนำเข้าข้อมูล (data import) ให้กับบริษัทจัดหาลูกค้า (lead generation) มันดูเหมือนจะง่าย แค่คลิกปุ่ม อัปโหลดไฟล์ แล้วข้อมูลก็โหลดขึ้นมา

คนส่วนใหญ่มักทึกทักเอาเองว่าฟีเจอร์เหล่านี้ทำงานได้ปกติ แต่หน้าที่ของ Tester คือการพิสูจน์ว่าความเชื่อนั้นผิด

Happy path คือกับดัก

ถ้าคุณอัปโหลดไฟล์ Excel ที่สะอาดสะอ้าน ระบบก็จะผ่าน คุณก็ไปกินข้าวเที่ยง คิดว่างานเสร็จแล้ว แต่ถ้าคุณหยุดอยู่แค่นั้น คุณกำลังส่งมอบโค้ดที่พัง และลูกค้าจะเป็นคนเจอข้อผิดพลาดนั้นในเช้าวันจันทร์บนระบบ Production

ปัญหาคือ Google Sheet

ผู้ใช้งานจริงไม่ได้ใช้ไฟล์ Excel ที่สะอาดเรียบร้อย พวกเขาใช้ Google Sheet ที่ยุ่งเหยิง พวกเขาสร้างความโกลาหลในสเปรดชีตและคาดหวังให้ระบบจัดการมันได้

เมื่อเราอัปโหลด Google Sheet ระบบก็ล้มเหลว มันแจ้งข้อผิดพลาดมากกว่า 1,000 รายการ ข้อมูลชุดเดิมและปุ่มเดิมกลับทำให้ระบบพังพินาศเพียงเพราะรูปแบบ (format) เปลี่ยนไป

จากนั้นเราจึงทดสอบคุณภาพของข้อมูล

  • แถวที่ไม่ถูกต้องไม่กี่แถว? ระบบจะข้ามไปและทำงานต่อ
  • แถวที่ยุ่งเหยิงเป็นร้อยๆ แถว? ระบบพังทันที

ตรรกะการตรวจสอบ (validation logic) ทำงานได้ดีกับข้อผิดพลาดเล็กๆ น้อยๆ แต่มันกลับล้มเหลวเมื่อต้องเผชิญกับกองขยะข้อมูลมหาศาล

เราใช้เวลาถึง 5 ชั่วโมงในการดีบั๊ก (debug) เรื่องนี้ เราโทษทั้งไฟล์ โทษทั้งเบราว์เซอร์ และโทษทั้งข้อมูล แม้แต่กาแฟเรายังโทษเลย

5 ชั่วโมงนั้นถือว่าราคาถูกมาก เพราะทางเลือกอื่นนั้นแพงกว่าเยอะ หากลูกค้าเป็นคนเจอข้อผิดพลาดนี้ พวกเขาจะสูญเสียความเชื่อมั่นในผลิตภัณฑ์ของคุณ คุณจ่ายค่าบั๊กในช่วงการทดสอบด้วย "เวลา" แต่คุณต้องจ่ายค่าบั๊กบนระบบ Production ด้วย "ลูกค้า"

และผมเลือกที่จะจ่ายด้วยเวลา

หากต้องการหาบั๊กที่แท้จริง คุณต้องเปลี่ยนวิธีคิด อย่าถามว่าซอฟต์แวร์ทำงานได้ไหม แต่จงถามว่าจะทำให้มันพังได้อย่างไร

เลิกคิดแบบนักพัฒนา แล้วเริ่มคิดแบบ:

  • ผู้ใช้ที่ขี้เกียจและอัปโหลดไฟล์ผิดฟอร์แมต
  • ผู้ใช้ที่สร้างความวุ่นวายด้วยการผสานเซลล์ (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