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