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