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