יום שלישי, 15 בינואר 2019

משפט השדה של בודק התוכנה

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

לפני כמה שנים החברה שעבדתי בה רכשה חברה שהייתה באותו עסק.
כדי לבדוק את יעילות המוצר החדש, הפננו את הנתונים הסטטיסטיים של המוצר הנרכש ל-DB שלנו, לטבלה משוכפלת של זו ששומרת את הסטטיסטיקה שבה השתמשנו במוצר שלנו.
הרעיון היה שכל חיפוש שהמשתמש מבצע נרשם בבסיס הנתונים, כולל מקור החיפוש, שיכל להיות באמצעות תיבת החיפוש של סרגל הכלים, דרך שורת הכתובת של הדפדפן, דרך טאב חדש, עמוד הבית או דרך טולבר.
הפלואו היה שכאשר ביצעת חיפוש, סרגל הכלים הוסיף את המקור לכתובת האתר ומשם משצר בבסיס הנתונים. לדוגמה, חיפשת את המילה "כלב" מטאב חדש. החיפוש יתבצע ותראה את התוצאות בדיוק כמו בחיפוש Google, ולכתובת האתר יתווסף פרמטר כמו source=NewTab (או source=AddressBar במקרה החיפוש היה דרך שורת הכתובת, וכו').

התבקשתי על-ידי מנהל צוות התכנות בצד השרת להכניס לשורת הכתובת של הדפדפן קבוצה של כתובות אתרים עם מקורות (source) שונים כדי לוודא שבסיס הנתונים מעדכן כראוי (סוג של בדיקת API). זה היה היקף הפיתוח שלנו בעצם.

הכנתי גיליון Excel עם מקרי מבחן רלוונטיים (קישורים) והתחלתי את הבדיקות: העתקת הכתובות שהוכנו עם ערכים שונים בפרמטר המקור.

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

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

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

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

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

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

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

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

כשאני חושב על זה, גם מזה למדתי משהו: תמיד לקרוא תיגר על ההנחות, כולל משימת הבדיקות! (וכמובן - לא לסמוך על אף אחד).

מה אתם חושבים? האם החמצת הבאג היתה באשמתי? האם התנהגתי נכון?

אין תגובות:

פרסום תגובה

רשומות פופולריות