הסברים · שלושה

איך אנחנו בודקים, במלואו

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

מערך הבדיקה

אותה מכונה, אותו קו, אותו תוכן

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

הכלל שמכריע הכול

לקוח נשפט על פי הקובץ, לא על פי הודעת המצב של עצמו

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

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

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

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

סדר וחזרה

למה הסבבים מתחלפים, ולמה ריצות בודדות אינן מתפרסמות

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

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

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

הבדיקות הלא זוהרות

מה רץ לפני כל סבב ובמהלכו

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

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

מה לא נעשה

גבולות המספרים האלה