ก่อนให้ลูกค้าเห็น เราพยายามพังระบบตัวเองก่อน: กระบวนการทดสอบภายในของทีม และรายการทรมานระบบที่เราใช้จริง

25 สิงหาคม 2569อ่าน 10 นาที
ก่อนให้ลูกค้าเห็น เราพยายามพังระบบตัวเองก่อน: กระบวนการทดสอบภายในของทีม และรายการทรมานระบบที่เราใช้จริง

ระหว่างเขียนเสร็จกับส่งมอบ มีงานหนึ่งชั้นที่ตัดสินคุณภาพมากกว่าฝีมือเขียนโค้ด: การทดสอบภายใน บทความนี้เปิดกระบวนการของเรา — รายการทรมานระบบที่สะสมจากบั๊กจริงหลายปี การทดสอบด้วยข้อมูลปริมาณจริงไม่ใช่ข้อมูลตัวอย่างสิบแถว การทดสอบซ้ำทุกครั้งที่แก้อะไร และเหตุผลที่เราให้คนที่ไม่ได้เขียนเป็นคนทดสอบ

มีช่องว่างหนึ่งในงานพัฒนาระบบที่ลูกค้ามองไม่เห็นแต่จ่ายราคาของมันเสมอ: ช่องว่างระหว่างคำว่าเขียนเสร็จกับคำว่าพร้อมส่งมอบ โค้ดที่เพิ่งเขียนเสร็จทำงานได้ — ในมือคนเขียน บนเครื่องคนเขียน กับข้อมูลที่คนเขียนป้อนอย่างถูกต้อง ระยะทางจากตรงนั้นถึงระบบที่รอดมือผู้ใช้จริงร้อยคน คือกระบวนการที่เรียกรวม ๆ ว่าการทดสอบภายใน และมันคือส่วนที่ทีมพัฒนาแต่ละเจ้าต่างกันมากที่สุดโดยที่ใบเสนอราคาหน้าตาเหมือนกันหมด ปรัชญาของเราเรื่องนี้สั้นมาก: บั๊กทุกตัวจะถูกเจอแน่ ๆ คำถามเดียวคือใครเจอ — เราเจอในห้องทดสอบ ลูกค้าเจอตอน UAT หรือลูกค้าของลูกค้าเจอหน้าเคาน์เตอร์ และลำดับนี้แต่ละขั้นราคาต่างกันสิบเท่า งานของการทดสอบภายในจึงไม่ใช่การยืนยันว่าระบบทำงาน แต่คือการแข่งกับทุกคนข้างนอกว่าใครจะพังมันได้ก่อน

รายการทรมานระบบ: บทเรียนจากบั๊กจริงที่กลายเป็นเช็คลิสต์

หัวใจของการทดสอบของเราคือเอกสารที่โตขึ้นทุกปี — รายการทรมานระบบที่ทุกข้อเคยเป็นบั๊กจริงที่ผ่านมือเรามาแล้วสักครั้งในชีวิต: บิลยอดศูนย์บาทและยอดติดลบ ชื่อลูกค้ายาวสองร้อยตัวอักษรและชื่อที่มีอีโมจิ การกดปุ่มบันทึกรัว ๆ สองครั้งติด (ต้นเหตุคลาสสิกของบิลซ้ำ) เน็ตหลุดตอนกำลังเซฟพอดี วันที่ 29 กุมภาพันธ์ การเปลี่ยนปี พ.ศ.-ค.ศ. ไฟล์แนบขนาดใหญ่ผิดปกติ ผู้ใช้สองคนแก้รายการเดียวกันพร้อมกัน สิทธิ์ที่ถูกถอดระหว่างที่คนนั้นล็อกอินค้างอยู่ และการพิมพ์ใบเสร็จตอนกระดาษหมดกลางแผ่น รายการนี้คือทรัพย์สินทางปัญญาที่แท้จริงของทีมพัฒนาที่มีอายุงาน — มันซื้อไม่ได้ ต้องเจ็บสะสมเอง และมันคือเหตุผลที่ทีมที่เคยส่งระบบมาหลายสิบตัว ทดสอบได้ลึกกว่าทีมที่เก่งเท่ากันแต่เพิ่งเริ่ม เพราะจินตนาการของมนุษย์เรื่องวิธีพังของระบบ แพ้ประสบการณ์เสมอ

  • คนเขียนไม่ใช่คนทดสอบ — คนที่เพิ่งเขียนฟีเจอร์รู้ในใจว่าควรกดยังไง และมือจะเลี่ยงทางที่พังโดยไม่รู้ตัว เราให้คนอื่นในทีมเป็นคนทดสอบเสมอ พร้อมโจทย์เดียว: ทำตัวเหมือนผู้ใช้ที่รีบ ไม่อ่านอะไร และกดผิดเก่ง — ตัวละครเดียวกับที่บทความ UX หน้างานของเราบรรยายไว้
  • ทดสอบด้วยปริมาณจริง ไม่ใช่ข้อมูลตัวอย่าง — ระบบที่ลื่นกับสินค้าสิบรายการอาจคลานกับหนึ่งหมื่นรายการ เราเติมข้อมูลระดับใกล้เคียงของจริง (สินค้าหลักพัน ลูกค้าหลักพัน ประวัติขายหลักแสนแถว) ก่อนทดสอบรอบท้าย เพราะปัญหาความช้าที่เจอตอนนี้คือการแก้โครงสร้าง แต่เจอหลังใช้จริงหกเดือนคือวิกฤต — หลักเดียวกับที่บทความ load testing ของเราอธิบายเชิงแนวคิด
  • แก้อะไรก็ตาม ทดสอบซ้ำรอบข้างเสมอ — บั๊กที่แก้แล้วชอบพาเพื่อนใหม่มา เพราะโค้ดที่ขยับกระทบทางเดินข้างเคียง ทุกการแก้จึงตามด้วยการไล่ทดสอบเส้นทางรอบจุดที่แตะ และก่อนส่งมอบทุกครั้งคือรอบใหญ่ที่เดินสคริปต์หลักทั้งเส้นอีกหนึ่งเที่ยว — น่าเบื่อ ซ้ำซาก และคุ้มทุกนาที

สิ่งที่เรื่องนี้แปลว่าอะไรสำหรับคนจ้าง

การทดสอบภายในคือต้นทุนก้อนจริง — ราวหนึ่งในสี่ถึงหนึ่งในสามของเวลาพัฒนาทั้งหมดในงานของเรา — และมันคือคำอธิบายส่วนหนึ่งว่าทำไมใบเสนอราคาที่ต่างกันมากอาจกำลังขายของคนละชิ้น ทีมที่ตัดการทดสอบเหลือการลองกดผ่าน ๆ ก่อนส่ง เสนอราคาถูกกว่าได้จริง และส่งมอบเร็วกว่าได้จริง — แล้วส่วนต่างทั้งหมดจะถูกจ่ายคืนโดยลูกค้า ในรูปของ UAT ที่ลากยาว บั๊กหลัง go-live และความเชื่อมั่นของทีมหน้างานที่เสียไปแล้วกู้ยาก คำถามที่ช่วยแยกทีมได้ตั้งแต่ก่อนเซ็น: ขอให้เล่ากระบวนการทดสอบก่อนส่งมอบให้ฟังหน่อย — ไม่ต้องรู้ศัพท์เทคนิคเลย ฟังแค่ว่าคำตอบเป็นกระบวนการที่มีขั้นตอน มีเจ้าของ มีรายการ หรือเป็นประโยคกว้าง ๆ ว่าเราทดสอบทุกอย่างครับ ทีมที่มีกระบวนการจริงจะเล่าได้เป็นฉาก ๆ เหมือนที่บทความนี้เพิ่งทำ

ทดสอบระบบQAจากทีมพัฒนาคุณภาพ

บริการที่เกี่ยวข้อง

รับพัฒนาระบบและซอฟต์แวร์เฉพาะทาง

ออกแบบและวางระบบตามความต้องการเฉพาะของธุรกิจคุณ ตั้งแต่ต้นจนใช้งานจริง

WhaleScope

ดูโครงสร้างตลาดของทุกหมวดธุรกิจไทย บน WhaleScope

รายชื่อบริษัท ผู้เล่นรายใหญ่ และอัตราคงอยู่ของแต่ละหมวด — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล

อ่านต่อ

UAT และการตรวจรับระบบ — ด่านสุดท้ายก่อนจ่ายเงินงวดใหญ่ ที่ธุรกิจส่วนมากตรวจผิดวิธี

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

พนักงานทำผิดจุดเดิมทุกสัปดาห์ เทรนแล้วก็ผิดอีก: ความผิดพลาดที่เกิดซ้ำไม่ใช่ปัญหาของคน แต่เป็นปัญหาของขั้นตอนที่อนุญาตให้ผิดได้

ธุรกิจส่วนใหญ่ตอบสนองต่อความผิดพลาดซ้ำด้วยการเทรนซ้ำ ตำหนิ หรือเปลี่ยนคน แล้วพบว่าคนใหม่ผิดจุดเดิมภายในเดือน เพราะขั้นตอนนั้นถูกออกแบบให้ต้องพึ่งความจำและความตั้งใจ ซึ่งเป็นสองอย่างที่มนุษย์มีจำกัดที่สุดตอนสี่โมงเย็นวันศุกร์ บทความว่าด้วยการออกแบบให้ผิดไม่ได้ แทนการขอให้ระวัง

เราอยากสอบตกตอน UAT: วิธีที่เราจัดการทดสอบรับมอบกับลูกค้า ให้เจอปัญหาตอนที่มันยังถูก

UAT ที่ผ่านฉลุยไม่ใช่ข่าวดีเสมอไป — บ่อยครั้งมันแปลว่าการทดสอบตื้นเกินกว่าจะเจออะไร บทความนี้เปิดวิธีจัด UAT ของทีมเรา: สคริปต์ที่เขียนจากงานจริงหนึ่งวันไม่ใช่รายการฟีเจอร์ คนทดสอบที่ต้องเป็นคนหน้างานตัวจริง การแยกบั๊กออกจากคำขอเพิ่ม และเหตุผลที่เราดีใจเมื่อลูกค้าหาเจอสิ่งที่เราพลาด

คำถามที่เราถามในประชุมแรกของทุกโปรเจกต์: เปิดสมุดโน้ตของทีมพัฒนา ว่าทำไมเราไม่เคยเริ่มจากคำว่าอยากได้ฟีเจอร์อะไร

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