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