בדיקה עם curl בודקת את הדבר הלא נכון
במאמר הזה
בקשת מונה שמגיעה ללא זהות דפדפן כותבת לשניים מתוך שנים עשר המקומות שביקור נספר נוגע בהם בדרך כלל. היא עונה 200. היא מחזירה תמונת מונה תקפה. שום דבר בשום מקום אינו אומר שדולגו עשרה מתוך השנים עשר.
למה נועד המסנן, ומה הוא עולה
המונים כאן מפרידים בין רובוטים לאנשים, וההפרדה נעשית לפי הזהות שהלקוח מוסר על עצמו. רשימת הסמנים קצרה וחד־משמעית בכוונה, והכלי curl/ נמצא בה. כך גם זהות ריקה, מתוך ההיגיון שבקשה ללא סוכן משתמש כלל אינה דפדפן.
שניהם נכונים. השירות אינו טועה כשהוא מתייחס לכלי curl ללא תוספות כרובוט; זה מה שהוא. הבעיה היא שהאדם שמפעיל את curl בדרך כלל אינו בודק אם זיהוי רובוטים עובד. הוא בודק אם הספירה עובדת, ובשקט ביקש את מסלול הרובוטים.
מה מתקבל: הסכום היומי של הצפיות עולה באחד, עמודת הבוטים עולה באחד, וזה הכול. אין שורה של מבקר ייחודי, ולכן אין דבר על מבקרים. אין רשומה ברשימת הנוכחים באתר. אין דף, אין מדינה, אין דפדפן, אין מערכת הפעלה, אין מכשיר, אין שעה. החלקים במערכת שמישהו ירצה באמת לבדוק הם החלקים שלא פעלו.
לכשל אין תסמין
זה החלק שכדאי להתעכב עליו. בדיקה שאינה מודדת דבר בדרך כלל מודיעה על עצמה: שגיאה, תוצאה ריקה, אפס במקום שבו אמור להיות מספר. כאן התשובה היא 200. הגוף הוא תמונת מונה אמיתית, בגודל 3,361 בתים. המספר בתמונה אפילו עלה, כי סכום הצפיות הוא אחד משני הדברים שאכן קרו.
לכן הבדיקה נראית מוצלחת. כל מה שבא בעקבותיה — “מסלול הספירה עובד”, “העמודה החדשה נכתבת”, “השינוי לא שבר דבר” — הוא מסקנה מהרצה שדילגה על רוב הקוד שהייתה אמורה להפעיל.
זה קרה במהלך הכתיבה
הגרסה הראשונה של המדידה שמאחורי הרשומה הזאת ביקשה /c/<number>. זאת אינה כתובת של תמונת מונה; הכתובת האמיתית מכילה את העיצוב ואת הסיומת, /c/<number>-<design>.png. הבקשה החזירה 404.
הסקריפט הדפיס שלוש פעמים: כותב ל־0 מתוך 12 מקומות. זה נכון, וזה גם בדיוק האופן שבו מסנן בוטים תקין היה נראה במבט חטוף. ה־404 היה בפלט, באותה טבלה, שורה אחת מעל האפסים. במשך דקה לא קראו אותו, כי האפסים היו החלק המעניין והם התאימו לציפייה.
זאת אותה טעות שהרשומה עוסקת בה, רמה אחת למעלה: מדידה שהפיקה תשובה מתקבלת על הדעת מסיבה שאיש לא בדק. היא נתפסה רק כי הסקריפט ספר שורות בשתים עשרה טבלאות במקום לסמוך על הבקשה — בקשה שנכשלת ובקשה שמסוננת נראות זהות מבחוץ.
מה לעשות במקום
יש לשלוח זהות דפדפן. דגל אחד, -A עם מחרוזת סוכן משתמש אמיתית, ואותה בקשה כותבת לעשרה מתוך שנים עשר המקומות במקום לשניים.
ויש לספור משהו בצד השני. קוד התשובה אומר שהבקשה הגיעה; הוא אינו אומר דבר על מה שעשתה. בכל דבר שבו המטרה היא תופעת הלוואי — מונה, תור, שורת יומן, שורה במקום כלשהו — הבדיקה חייבת להסתכל על תופעת הלוואי. ספירות לפני ואחרי בכל טבלה מעורבת דרשו כאן עשרים שורות והפכו תוצאה דו־משמעית לחד־משמעית פעמיים: פעם עבור המסנן ופעם עבור ה־404.
שניים מתוך שנים עשר המקומות נשארו ריקים גם עם זהות דפדפן: עמודת הבוטים, בצדק, ורשימת הדפים המפנים, שלא רשמה את הדף המפנה שנשלח. השני אינו מוסבר כאן, כי הוא טרם נחקר לעומק. הוא מדווח כי האפשרות האחרת היא לפרסם טבלה עם אחת עשרה שורות ולקרוא לה שתים עשרה.