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