מחפש צרות | מיכאל שטאל

"משל - סיפור קצר, מלבב, השובה ליבם של גדול כקטן, אולם בקפלי אדרתו חופן הוא אוצרות פז - פניני מחשבה ונטפי מוסר. הנשכיל לחשוף מכמניו?" (ראיתי בפרסומת לספר "משל למה הדבר דומה"  - אוסף משלים מאוצר התרבות היהודית). מושג קרוב אחר הוא הדימוי (מטאפורה). מעבר לזה שהוא אהוב על המורים לספרות באשר הם, מטאפורה יכולה להסביר ולחדד רעיון מסוים על ידי הקבלה למשהו מתחום אחר, שניתן להקיש ממנו. או בשפת ויקיפדיה:  "מטאפורה היא אמצעי לשוני שנעשה בו שימוש על מנת להאיר מושג אחד בתכונותיו של מושג אחר. [...] למטפורות יש חשיבות תקשורתית וקוגניטיבית משום שהן מביעות, משקפות ומחזקות דרכים שונות להבנת ההיבטים השונים בחיי האדם1

ובכל זאת... מה הקשר לבדיקות תוכנה?

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

 

פופקורן

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

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

(את הרעיון הזה למדתי מבועז ארמוזה, חברי לעבודה).

 

הידוק ברגים

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

בבדיקות לא פונקציונאליות אנחנו מודדים ערכים, כגון: מהירות עיבוד נתונים, כמות משתמשים נתמכת, עומס על המעבד וכו'. את תוצאת המדידה אנו משווים לערך קבוע מראש.  הרבה פעמים קורה שבתחילת הפרוייקט ערך מדידה כלשהו גבוה ואולי אף עובר מעל מה שנקבע בדרישות. אבל ככל שהפרוייקט מתקדם, השקעה בשיפור הביצועים הופכת את הקוד ליעיל יותר, והמדידות משתפרות (איור 1). במקרה כזה, כל פעם ששיפור בקוד מוריד את הערך הנמדד בצורה עקבית, אנחנו נהדק את הברגים: נוריד את גבול הבדיקה כך שנקבל התראה מוקדמת אם הזרם חזר לערכים גבוהים. זה אומר שנהדק את הגבול אף יותר ממה שנקבע בדרישות של הפרוייקט! נניח שהגבול למדידה באיור 1 הוא 15 מיליאמפר (מ"א). אם נשאיר את גבול הבדיקה בערך זה גם אחרי השיפורים בביצועים, הרי שנחמיץ את ההזדמנות להגיב מידיית כשיקרה משהו כמו באיור 2 . והרי ברור שקרה שם משהו: שינוי מתוכנן ומודע, או (יותר סביר) שינוי בקוד שגרם לתופעת לוואי לא רצויה של עליית זרם ההמתנה. אם הגבול שלנו לבדיקות ישאר ב-15 מ"א (על פי הדרישה!), לא נדע להתריע שקרה משהו.

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

    

 

מצות עגולות

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

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

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

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

 

חגורת בטיחות

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

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

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

 

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

 

 

משפטים לציטוט

עם כל שיפור בקוד, נהדק את הברגים

שינוי טכנולוגי יכנס ביתר קלות עם עטיפה של מצה עגולה

בדיקות "bug escapes" הן בדיקות חגורת בטיחות

 

 

 

1 Semino, E., Demjén, Z., & Demmen, J. (2018). An integrated approach to metaphor and framing in cognition, discourse, and practice, with an application to metaphors for cancer. Applied Linguistics, 39(5), 625-645.