เมนู

ข้อมูลตัวตนในชุดทดสอบประจำ จัดเก็บอย่างไรให้ทำซ้ำได้

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

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

  • ข้อมูลทดสอบ
  • ชุดทดสอบประจำ

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

ทำไมการสุ่มใหม่ทุกครั้งทำให้ข้อบกพร่องตามหาไม่เจอ?

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

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

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

ชุดทดสอบประจำควรมีข้อมูลอะไรบ้าง?

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

รายการที่ควรมีในชุดข้อมูลตัวตนมีดังนี้

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

ชุดทดสอบประจำเน่าตามเวลาได้อย่างไร?

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

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

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

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

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

ระเบียนในชุดทดสอบประจำผูกกับกรณีทดสอบอย่างไร?

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

ตารางข้างล่างนี้เป็นตัวอย่างวิธีจับคู่ที่อ่านแล้วเข้าใจได้ทันทีโดยไม่ต้องเปิดโค้ด

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

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

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

สำหรับนักพัฒนา: โครงสร้างและตัวอย่างขอบเขตที่ควรเตรียม

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

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

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

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

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

ก้าวต่อไป

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

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

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

อ่านต่อ

บทความเกี่ยวกับ เครื่องมือสร้างข้อมูลตัวตนและข้อมูลทดสอบออนไลน์

บทความเกี่ยวกับ เครื่องมือสร้างข้อมูลตัวตนและข้อมูลทดสอบออนไลน์

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