תפריט

בדיקת שדה בחירת מדינה: חיפוש, סדר מיון ונגישות מקלדת

שדה בחירת מדינה נראה פשוט ונכשל בדרכים שאינן גלויות. הנה מה לבדוק בו: צורות הרכיב, משמעות החיפוש, סדר המיון ומסלול המקלדת.

פורסם

  • רכיבי טפסים
  • נגישות
  • נתוני בדיקה

שדה בחירת מדינה נראה כמו רשימה נפתחת ותו לא, והוא אחד הרכיבים היחידים בטופס שנבדקים פחות ממה שהם נראים. הוא מכיל תוכן שאף אחד בפרויקט לא שלט בו, הוא תלוי במיון שמשתנה בין סביבות, והוא נוגע בשאלות של שפה וכתיב שאף רכיב אחר בטופס אינו נוגע בהן.

המאמר הזה מתייחס לרכיב כאל יחידת בדיקה בפני עצמה. הוא מכסה את הצורות שהוא מקבל, את המשמעות המדויקת של חיפוש בתוכו, את מקורות השגיאה בסדר המיון, ואת השאלה אם רשימת האפשרויות נשארת עקבית כאשר משהו אחר במערכת משתנה.

אילו צורות מקבל הרכיב?

הרכיב מופיע בשלוש צורות עיקריות, ולכל אחת מהן כשל אופייני משל עצמה.

רשימה נפתחת פשוטה היא הצורה הבטוחה ביותר, והיא נשברת כאשר מספר האפשרויות גדל: אין חיפוש, אין קיבוץ, והגלילה הופכת את הבחירה לניחוש. תיבת חיפוש עם השלמה מציעה את ההיפך, כלומר מהירות בבחירה, והיא נשברת בדיוק במקום שבו המשתמש אינו יודע איך קוראים למדינה בשפה שבה כתוב הממשק.

הצורה השלישית היא שילוב: שדה טקסט חופשי שמשלים לרשימה סגורה. הוא הנוח ביותר, והוא גם זה שמייצר את הכשל הקשה ביותר לתיאור, משום שהמערכת מקבלת מחרוזת שאיש אינו יודע אם הייתה אפשרות תקפה או שהוקלדה ביד.

שלוש הצורות דורשות שלוש קבוצות בדיקות שונות, ולכן כדאי לתעד איזו מהן נמצאת בכל מסך. בדיקה שנכתבה מול רשימה סגורה אינה אומרת דבר על שדה טקסט חופשי, גם אם שניהם מציגים את אותה רשימת מדינות בדיוק.

מה פירוש חיפוש ברכיב הזה?

חיפוש ברכיב הזה אינו חיפוש טקסט, משום שהתוצאה הנכונה אינה המחרוזת הקרובה ביותר אלא המדינה שהמשתמש התכוון אליה. אלה שני יעדים שונים, וההבדל ביניהם הוא רוב הבדיקות שכדאי לכתוב.

השאלות המעשיות ספציפיות. האם החיפוש מתאים מתחילת המחרוזת או בכל מקום בה? האם הוא מתעלם מסימנים דיאקריטיים, כך שכתיב בלי סימנים מוצא את אותה מדינה? האם הוא מוצא גם את הקוד הקצר וגם את השם המלא? האם הוא מוצא כינוי נפוץ שאינו השם הרשמי?

סוג הקלט הצורה שהוזנה מה חייב להימצא
אותיות ראשונות של השם שלוש או ארבע אותיות המדינה שבה השם מתחיל בהן
קוד קצר קוד בן שתי אותיות או שלוש אותה מדינה, בלי קשר לשם
צורה נפוצה ומקוצרת שם שגור בשפה מדוברת אותה מדינה, מסומנת ככינוי
כתיב עם סימנים דיאקריטיים שם מלא עם סימנים אותה מדינה כמו הכתיב בלי הסימנים

כל שורה בטבלה הזאת היא בדיקה נפרדת, וכל אחת מהן יכולה להיכשל בנפרד. בדוגמה מעשית, ברזיל היא מקרה שבו החיפוש נדרש להתמודד עם סימנים דיאקריטיים בשמות מקומות, משום שכתיב מלא וכתיב בלי סימנים מתייחסים לאותה מדינה בדיוק.

מדוע קל כל כך לטעות בסדר המיון?

סדר המיון נראה כמו החלטה קוסמטית עד שהוא משתנה בין שתי סביבות, ואז בדיקות שנכתבו מול רשימה אחת נכשלות מול אחרת בלי שאף שורת קוד השתנתה.

המקור הראשון הוא ההשוואה עצמה. מיון לפי קוד שתלוי ברישיות, מיון לפי קוד שאינו תלוי ברישיות ומיון לפי קיבוץ לשוני מחזירים שלושה סדרים שונים לאותה רשימה. לאורך רשימה אחת אותו קלט נראה מסודר; לאורך רשימה אחרת הוא נראה כאוטי לחלוטין.

המקור השני הוא מי שממיין. אם המיון נעשה בשרת, התוצאה תלויה בקונפיגורציית המקום של השרת. אם הוא נעשה בדפדפן, היא תלויה בהגדרות של המשתמש. אם הרשימה נשמרת ממוינת מראש, היא תלויה במי שייצר אותה לאחרונה. כל אחד מן המקרים האלה דורש בדיקה אחרת, וכולם נראים אותו דבר בקוד.

המקור השלישי הוא המיון לפי מילת פתיחה כללית. שם של מדינה שנפתח במילה כללית מקובץ במקום שאינו המקום שבו האדם יחפש אותו, והתוצאה היא רשימה שממוינת נכון ולא מועילה.

האם האפשרויות נשארות עקביות כשמשהו אחר משתנה?

הרשימה תלויה בכל מה שמעליה, ולכן הבדיקה צריכה לשנות דברים אחרים ולא את הרכיב עצמו.

שינוי שפת הממשק משנה את השמות, ולכן את הסדר. שינוי המדינה של המשתמש עשוי לשנות את הרשימה המקוצרת שמוצגת קודם. שינוי מצב של חשבון, בין משתמש מחובר לאורח, עשוי לשנות אילו אפשרויות מסומנות כנתמכות. שינוי של גרסת מערך הנתונים משנה את האורך של הרשימה עצמה.

בכל אחד מן המקרים האלה יש לבדוק שני דברים בנפרד. האם הרשימה השתנתה כפי שהתכוונו, והאם הערך שנבחר קודם נשמר. הכשל השני קשה בהרבה מן הראשון, משום שהוא נראה כמו הצלחה: הטופס נשלח, הערך קיים, והוא פשוט אינו הערך שהמשתמש בחר לפני שהרשימה התחלפה.

בדיקה שכזאת חושפת גם את הכיוון ההפוך, כלומר מקרה שבו הרשימה לא השתנתה אבל היה צריך להשתנות. אם הוספת מדינה חדשה אינה מופיעה בטופס, הבעיה אינה ברכיב אלא במקום שבו הרשימה נבנית.

למפתחים: לבדוק את מסלול המקלדת כמסלול מן השורה הראשונה

בדיקת המקלדת היא בדרך כלל הבדיקה האחרונה שנכתבת, והיא גם זו שחושפת את הכשלים המעניינים ביותר ברכיב שנשמע פשוט. מסלול המקלדת אינו מקביל למסלול העכבר; הוא עובר בכל מקום שבו הרשימה נבנית מחדש, ולכן הוא חושף תלות בסדר שלרוב אינה מכוונת.

יש לבדוק את המסלול המלא ולא רק את הבחירה: מעבר לרכיב, פתיחה במקלדת, הקלדה של חיפוש, מעבר בין התוצאות, בחירה וסגירה. בכל אחד מן השלבים האלה יש לבדוק מה קורה כשאין תוצאות, כשהוקלד תו שאינו אות, וכשהחיפוש מוחזר אחורה לתו ריק.

בדיקות אלה שוות את הזמן משום שהן נוגעות גם לקוראי מסך, גם לטופסים שנשלחים מהר, וגם למשתמשים שאינם משתמשים בעכבר מסיבות אחרות לגמרי. מדריך המדינות והאזורים מרכז את הידע על ערכי המדינה עצמם, וכך אפשר לבדוק את הרכיב מול מערך נתונים שאינו מומצא תוך כדי עבודה. לשאלה מדוע שם שמוצג בשפה אחת אינו זהה לערך שנשמר, המדריך למדינה מול שפה מסביר את ההפרדה.

כל דוגמה שהובאה כאן היא להמחשה. שמות המדינות, הקודים והצירופים במאמר הזה הם דוגמאות בדיוניות שנכתבו לצורך הסבר של בדיקות, ואין להתייחס אליהן כתוצאה של בדיקה שבוצעה.

צעדים הבאים

יש לכתוב תחילה את שלוש הבדיקות שהרכיב הזה נכשל בהן לרוב: החיפוש מוצא כתיב בלי סימנים דיאקריטיים, הבחירה נשמרת לאחר שהרשימה מתחלפת, ומסלול המקלדת משלים בחירה בלי עכבר. לאחר מכן מתקדמים למקומות שבהם הרכיב פוגש מערכות אחרות. המדריך לטריטוריות קטנות וקודים מיוחדים מכסה את הערכים שגורמים לרשימה להיראות שלמה כשאינה כזאת, והמדריך לתרחישי כתובת חוצי גבולות מסביר מה קורה כאשר כמה שדות מדינה בטופס אחד אינם מסכימים זה עם זה.

המשך קריאה

מדריכים בנושא תבניות נתוני כתובת וזהות עבור 86 מדינות