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