เมนู

ทดสอบรหัสยืนยันอัตโนมัติ ในงานทดสอบแบบครบวงจร

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

เผยแพร่เมื่อ

  • รหัสยืนยัน
  • งานทดสอบแบบครบวงจร

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

รหัสยืนยันเดินทางอย่างไรในงานทดสอบแบบครบวงจร?

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

ความยากไม่ได้อยู่ที่การอ่านตัวเลข แต่อยู่ที่การอ่านให้ถูกฉบับ ในกล่องทดสอบหนึ่งกล่องอาจมีข้อความหลายฉบับจากหลายกรณีทดสอบปะปนกัน และข้อความที่หน้าตาเหมือนกันที่สุดคือข้อความที่คุณไม่ต้องการ

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

ขั้นตอนใดที่ทำอัตโนมัติได้ และขั้นตอนใดยังต้องมีคน?

สิ่งที่ทำอัตโนมัติได้คือการอ่านข้อความ การแยกรหัส และการกรอกกลับ ซึ่งเป็นงานที่ทำซ้ำได้และไม่ต้องใช้การตัดสินใจ

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

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

ทำไมการทดสอบจึงค้างรอและหมดเวลา?

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

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

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

สาเหตุที่สี่คือการจำกัดการส่งซ้ำ เมื่อระบบเห็นว่ามีการขอรหัสหลายครั้งในเวลาสั้น ๆ มันจะหยุดส่งตามที่ออกแบบไว้ งานทดสอบที่รันซ้ำเร็ว ๆ จึงเจออาการนี้ได้บ่อย ทั้งที่พฤติกรรมนี้คือสิ่งที่ระบบควรทำ ไม่ใช่ข้อบกพร่อง

ปัญหาจากข้อความเก่าที่ค้างอยู่ในกล่อง

ถ้าที่อยู่ทดสอบถูกใช้ซ้ำระหว่างรอบ ข้อความจากรอบก่อนจะยังอยู่ในกล่อง และเมื่อตัวแยกอ่านฉบับแรกที่เจอ มันจะได้รหัสเก่าที่หมดอายุแล้ว ผลคือระบบปฏิเสธรหัสนั้น งานทดสอบรายงานว่าล้มเหลว และผู้พัฒนาจะเสียเวลาไปกับการหาสาเหตุในโค้ดที่ไม่ได้ผิดอะไร

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

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

สำหรับนักพัฒนา: อ่านให้ทน ตั้งเพดาน และอย่าปิดการจำกัดการส่งซ้ำ

เรื่องแรกคือความทนของตัวแยก ให้ยึดจากข้อมูลที่เสถียรที่สุดเท่าที่มี เช่นที่อยู่ผู้รับและช่วงเวลาที่ข้อความเข้ามา อย่ายึดจากรูปแบบการจัดวางในเนื้อหา เพราะรูปแบบนั้นจะเปลี่ยนทุกครั้งที่มีคนแก้เทมเพลต

เรื่องที่สองคือการเลือกฉบับ ควรเรียงตามเวลาที่มาถึงและเลือกฉบับใหม่ที่สุดที่ตรงเงื่อนไข ไม่ใช่อ่านฉบับแรกที่เจอ การเรียงแบบนี้ทำให้การทดสอบทนต่อข้อความค้างได้เองโดยไม่ต้องพึ่งการล้างกล่อง

เรื่องที่สามคือเพดานเวลา ควรมีทั้งเพดานต่อการรอหนึ่งครั้งและเพดานรวมของทั้งขั้นตอน และเมื่อถึงเพดานต้องรายงานข้อความที่อ่านได้ทั้งหมดออกมา เพื่อให้ผู้ที่มาดูรู้ทันทีว่าปัญหาอยู่ที่ข้อความไม่มา หรืออยู่ที่ตัวแยกอ่านไม่ออก

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

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

ข้อผิดพลาดที่พบบ่อยที่สุด

ข้อผิดพลาดที่พบซ้ำบ่อยที่สุดมีสี่ข้อ

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

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

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

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

อ่านต่อ

บทความเกี่ยวกับ อีเมลชั่วคราว (ใช้ครั้งเดียว / 10 นาที)

บทความเกี่ยวกับ อีเมลชั่วคราว (ใช้ครั้งเดียว / 10 นาที)

รายการนี้แสดงเฉพาะบทความในหัวข้อของหน้านี้