เมนู

เครื่องมือสร้างที่อยู่แบบสุ่ม กับความหมายของคำว่าสุ่มจริง

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

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

  • ข้อมูลทดสอบ
  • ที่อยู่สุ่ม

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

ทำไมที่อยู่สุ่มจึงต้องสอดคล้องกันภายในตัวเอง?

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

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

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

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

สุ่มแล้วเรียกซ้ำได้หมายความว่าอย่างไร?

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

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

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

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

เมื่อใดควรใช้ชุดข้อมูลตายตัว?

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

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

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

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

เมื่อใดที่การสุ่มใหม่ทุกครั้งคือสิ่งที่ต้องการ?

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

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

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

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

ที่อยู่สุ่มใช้กับงานทดสอบโหลดและงานทดสอบแบบยิงข้อมูลแปลกได้อย่างไร?

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

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

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

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

การส่งออกเป็นไฟล์สำหรับงานทดสอบขับด้วยข้อมูลทำอย่างไร?

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

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

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

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

ข้อผิดพลาดที่พบบ่อยในการสุ่มหลายประเทศมีอะไรบ้าง?

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

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

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

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

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

ก้าวต่อไป

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

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

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

อ่านต่อ

เครื่องมือยอดนิยมและบทความวิธีใช้

เครื่องมือยอดนิยมและบทความวิธีใช้

บทความวิธีใช้ที่ถูกค้นหามากที่สุด หนึ่งบทความต่อหนึ่งเครื่องมือในเว็บไซต์