תפריט

בחירת מדינות לנתוני בדיקה: שלושה צירים וקבוצת ברירת מחדל

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

פורסם

  • נתוני בדיקה
  • כיסוי מדינות
  • בדיקות טפסים

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

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

מדוע קבוצת המדינות ראויה להחלטה משל עצמה?

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

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

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

שלושה צירים: נגישות עסקית, קושי הנתונים, ערך גבול

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

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

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

מה הופך דגימת גבול לטובה?

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

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

רוחב ועומק אינם תחליף זה לזה. עשרים מדינות דומות מפעילות את אותו נתיב קוד עשרים פעם; שלוש קיצוניות נבחרות היטב מפעילות שלושה נתיבים שונים.

כיצד מטפלים במדינות שבהן שדה אינו רלוונטי?

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

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

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

ממה מורכבת בדרך כלל קבוצת ברירת מחדל

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

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

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

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

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

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

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

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

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

צעדים הבאים

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

המשך קריאה

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