יום ראשון, 29 במאי 2016

ביקורת ספר: Exploratory Software Testing

הכותב
ג'יימס וויטקר הוא בעל זכויות רבות בעולמנו המקצועי. הוא איש אקדמיה, ניהל בדיקות במייקרוסופט ואח"כ בגוגל. הזכרתי את התוכן של ספר אחר שלו, איך בודקים תוכנה בגוגל, בשני פוסטים קודמים: כאן וכאן. אגב, בספר על גוגל הוא כתב עם עוד שני שותפים וה"קול הספרותי" שונה שם, פחות אמפתי לבודקים.
  
נושא הספר
הספר הנדון הוא ספר שמדבר על בדיקות אקספלורטוריות (מה דעתכם על "בדיקות סיוריות"? נשמע לי טוב יותר מ"בדיקות חקרניות"). כבר סקרתי כאן ספר על הנושא, והינה הספר הזה, וכמה כבר אפשר לכתוב על בדיקות שכאלה שבכלל לא מתועדות כמו הסקריפטד?
זה מזכיר לי שאלה שמישהו שאל פעם: כמה כבר אפשר לבדוק עמוד חיפוש כמו "גוגל". שתי השאלות נובעות מחוסר ידע, שכן אפשר לדבר על זה ולבדוק הרבה מאוד דברים, ודברים חשובים. הספר Explore It שסקרתי והספר הזה שונים, וכדאי לקרוא את שניהם. שם מדובר יותר על ה"מה", וכאן על ה"איך".
לגבי הספר עצמו
יש פרקים מעניינים יותר ופחות בספר. הפרקים על עצות לבודק המתחיל (לא קראתי. אני מניח שיהיו כאלה שמן הסתם זה יעניין אותם) והעתיד של הבדיקות (מודה: לא היה לי כוח לקרוא אותו) פחות עניינו אותי. הם מורכבים בעיקר מ-מור"קים. לעומת זאת פרקים 4 ו-5 שבהם דנים בנושא הספר, הם לדעתי ממש טובים, וגם פרק 6 שהוא חלק מעשי יותר.
  
בפרקים 4 ו-5 מדובר על שיטות בדיקה שמשתמשים בהן במייקרוסופט (לפחות בזמן כתיבת הספר). בגדול, הם משווים את הבדיקות הללו לסיורים (היעד המועדף: לונדון. קשה לי לומר שאני לא מבין אותם).
בפרק 5 מדברים על סיורים נטו ללא גיבוי של בדיקות סקריפטד. למשל יש טיול של אנשי עסקים, כלומר החלק של המערכת ש"עושים את הביזנס", כהגדרתו. כאן יש את "סיור ה-F1" בו משווים את דפי העזרה למערכת. "סיור הכסף" הוא כשמו, מה שמביא ללקוח את הכסף. למשל מה שאנשי המכירות מראים בדמויים.
יש את "סיור האינטלקטואל" שבו שואלים שאלות קשות, "סיור פחי הזבל" שהוא סיור לפי סדר בכל פרט ופרט ב"שכונה". סיור ה"סופרמודל" שהוא מעבר שטחי על ה-UI (קצת לא PC בשביל אמריקאי, לא?) ועוד.
  
בפרק 5 יש טוויסט מעניין של בדיקות היברידיות, כלומר לקיחת סקריפט טסטינג קיימים ולהוסיף להם סיורים. מן הסתם לא כל הסיורים מתאימים לבדיקות ההיברידיות.
  
בפרק 6 ג'יימס נותן את רשות הדיבור לבודקים במייקרופוסט שמספרים על הדרך שלהם לערוך את הבדיקות הללו. לטעמי ג'ף סטנף הוא החלק היותר מוצלח.
  
האם אפשר להסתפק בבדיקות אלה?
יש כאן השקפה מעניינת מאוד על בדיקות סיוריות מהסוג הנאמר. לטענת הכותב לומר שהמוצר נבדק ע"פ הסיורים המוגדרים, אלו שגם מופיעים בספר, יוצרים כיסוי שלם ובזה הם שווים לסקריפטד. אני מדגיש שוב. ביצעת את כל הסיורים - אתה סגור מבחינת הבדיקות הידניות. עכשיו ברור שיש חורים בשיטה, ייתכן שמשהו יבדק רק בצורה מסויימת, כי שני בודקים שונים היו עושים את זה אחרת (גם אותו בודק בזמו אחר) ובאג מסוים עלול לא להתגלות. אבל הי, זה חיסרון קיים גם בבדיקות סקריפטד.
אני חייב לומר שזה ממש מהפכני בעניי, ואפילו נשמע הגיוני. בגדול אני מניח שגם אפשר לסמוך על מייקרוסופט. אבל לפני שאשתכנע לגמרי אני הייתי בודק שאכן לא ניתן לפספס שום פונקציונליות במוצר ואולי מריץ בדיקות אלה במקביל לקיימות בכדי לקבל ביטחון. ייתכן שבמייקרוסופט זה יעבוד אבל המוצרים אחרים - לא.
שאלה נוספת היא האוטומציה. אם הכיסוי הוא כ"כ מדעי, אולי אפשר לעשות בדיקות אוטומציה שיכסו אותן. אבל אז מה נשאר מהאקספלורטורי?
  
הוא גם לא מזכיר בדיקות אחרות, כמו קומפטביליות והיחס לבדיקות אלה, מתי במחינת שלב הפיתוח עורכים אותן, איך מתמודדים עם בדיקות API ועוד.
  
לסיכום
למרות הפגמים זה ספר טוב, זורם, וכדאי לקרוא אותו. לבטח הוא יעזור למצוא באגים בסבב הבא שלכם.

פורסם במקור May 28, 2016

יום ראשון, 22 במאי 2016

קשיבות (mindfulness) ואקפלורטורי טסטינג

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

מהי קשיבות?
Mindfulness, Signs, Sky, Clouds, Meditation
האדם שפרסם את התורה הזו במערב הוא ג'ון קבט-זין, פרופ' לרפואה, שחיפש דרך להקל על כאבים כרוניים שמטופליו סבלו מהם. כיום הדרך הזו הפכה להיות נפוצה גם בעולם המערבי בזכות יתרונות שונים שיש לה, הכוללת גם השלכות בריאותיות שנובעות מהשימוש בה.
קשיבות היא שימת לב בצורה מודעת להווה, היא להיות עם עצמך (מחשבות, פעולות, רגשות, תחושות גופניות) בצורה בלתי שיפוטית. להיות נטו עם מה שקורה כרגע, עם הרגע המיוחד הזה.
לדוגמא: כאשר אנו משוחחים עם מישהו, אנו קשובים למה שהוא אומר, לבחירת המילים שלו, לשפת הגוף שלו. אנו מודעים למה שקורה במהלך השיחה, מה זה גורם לנו. כאשר אנו אוכלים אנו קשובים לחוויה של הטעם, לחוויה של המרקם, של איך שהאוכל נראה וגם לתחושת הטעם, התחושות של קיבתנו בבטננו.
  
באתר גדות מסבירים:
גישת הmindfulness מכוונת לייצר מרווח בין אירועים ודברים בעולם, לבין המחשבה או הייצוג המנטלי שלהם. היא טוענת כי הפחד מן המילה "חתול" אצל אדם הפוחד מחתולים הינה תוצר של "הדבקה קוגניטיבית" (cognitive fusion) אשר מגדילה את הסבל. שיטת הmindfulness מציעה להתבונן במחשבות כמחשבות, במקום לראות בהן את המציאות עצמה. כתוצאה מכך, אין למעשה טעם לנסות לשנות מחשבות או רגשות, להתעלם מתחושות פיזיות או מדחפים... ניתן להתבונן בקיומם של אירועים מנטליים אלה מבלי שיהיו חייבים להשפיע על המציאות שלנו, על ההתנהגות שלנו. מה עוד, שבעצם הניסיון לשנות, להחליף, להתעלם או להדחיק אנחנו למעשה מעצימים את הסבל משום שהמינד, שכל כך יעיל בסביבה החיצונית, לא מסוגל לשלוט באופן פנימי ברגשות, תחושות, דחפים ומחשבות, כך שהניסיון עצמו מביא לתסכול ואף הגברה של אירועים מנטליים בלתי רצויים.
  
בסילבוס לקורס על הנושא בבר-אילן מוסיפים:
כולנו נולדים עם היכולת הטבעית להיות בקשיבות (תינוק או פעוט הם הדוגמה לכך), אך לצערנו עומס החיים וחוויות קשות לעיתים מקלקלים יכולת זו.
  
לצורך הבהרה, נסו לרגע לעצור, לשבת בצורה זקופה אך נוחה, ולהתרכז במשהו (נשימה, מידע חושי, מוזיקה וכד'). האם אתם יכולים פשוט להתרכז בנושא ללא הפרעות? כנראה שלא. פתאום נחשוב על הריב מאתמול, על רשימת ה"לעשות" שלנו, על משהו שקשור לעבודה. מי שיש לו ילדים יודע שקשה להיות איתם במלוא מובן המילה כשהם מספרים לנו על חוויותיהם, למרות שנרצה לעשות זאת.
  
ברור שלא ניתן להיות קשוב כל הזמן, אבל יחד עם ההתנסות נוכל אולי להגיע ליותר קשיבות גם ביום-יום.
  
מדוע זה חשוב?
המיקוד שלנו בהווה מקבל חיזוק כשלא מכניסים חששות לעתיד או פחדים מהעבר להווה.
קל לנו יותר להפריד את החוויה מהשיפוט שלה ומכאן להגיע להחלטות נבונות יותר.
  
איך נכנסים לסטייט הזה?
אנו מתבוננים. משהים את השיפוט ואת ההגבה. פשוט נמצאים ברגע, נותנים רק למודעות לפעול, לא למחשבות.
אם משהו מנסה להפריע לנו או שמחשבות קשורות או לא עולות, נהיה מודעים לזאת ובעדינות נחזור למצב של קשיבות.
יש להישאר בערנות מלאה.
נהיה פתוחים לנתונים מכל החושים.
אנו מתארים את מה שקורה בצורה חדה וללא עירוב של פרשנות.
אנו משתתפים בחוויה, בהווה, כשאנו לא מביאים שם מטענים אחרים. אנו נמצה את החוויה עד תום.
  
בכדי לתאר ביתר דיוק את התהליך, ובכדי שיהיה קל לזכור מצאתי את האקרונים הבא:
STOP (Stop, Take a breath, Observe your experience and Proceed)
עצור: קורה משהו שאת רוצה להבין לעומק? אתה מוצף ברגשות? עצור לרגע, ולו למספר שניות.
שאף ונשוף: נתרכז בשאיפת האויר, בהתמלאות הריאות, בנשיפה.
תאר: את מה שקרה בצורה יבשה, את הרגשות, מחשבות.
המשך: עם התובנות שקיבלת.
  
קשיבות והקשר לאקספלורטורי טסטינג:
אמלי, או: "אבל מה הקשר לאקספלורטורי אני לא מבין?"
מי שקרא בעיון (או בקשיבות, יש לומר) את מה שכתוב למעלה, כבר קיבל כמה רמזים. אבל אני אסביר בפירוט.
  
יש לנו מוצר, סביבה, הבנה. כתבנו את הצ'רטר לבדיקות, או שהחלטנו איזה סוג של בדיקה נערוך, במה נתמקד וכד'. בקיצור, אנחנו מתחילים?
לא לפני שנוודא שיש לנו את המצע הפסיכולוגי לכך. אקספלורטורי טסנינג זו פעילות ש-תמיד ידענו-דורשת את מלוא המשאבים של הבודק, את המחויבות המלאה שלו. הרי בסופו-של-דבר עליו ללמוד על התוכנה, לתכנון את צעדי הבדיקה הבאים ולערוך את הבדיקות, כל הזמן ובמקביל. בניגוד לסקריפטד, בהן ניתן להפסיק כמעט בכל נקודה, להכין קפה ולחזור לצעד הבא. היא אמורה להיות בשיא הריכוז בכדי להצליח.
  
בכדי להגיע לכך, אני מציע להשתמש בקשיבות.
זה בעצם אומר שאנו נכנסים למצב בו אנו נותנים "שימת לב בצורה מודעת להווה, היא להיות עם עצמך (מחשבות, פעולות, רגשות, תחושות גופניות) בצורה בלתי שיפוטית. להיות נטו עם מה שקורה כרגע, עם הרגע המיוחד הזה." אנו לא ניתן למחשבות אקראיות להפריע לנו. אנו לא נביא רגשות מהעבר (אין מצב שזה יעבוד הפעם, זה לא הוגדר, המפתח עצבן אותי), לא נכניס חששות מהעתיד (האם יעריכו את עבודתי, האם המוצר יצליח). פשוט נרשה למודעות שלנו ליצור אינטראקציה עם המוצר, לבחון אותו, להתרשם, לחקור, לקבל תובנות. ניתן גם בזמן הפעולה לתאר לעצמנו בצורה ברורה את הפלואו, את מה שעשינו, ניתן לרשום את הרגשות שחווינו (אבל כחוויה חיצונית, לא להיכנע להן).
מודעות נוגעת ישירות בחוויה ללא תיווך של חשיבה. אין הבדל בין הפנימי לחיצוני, בין הבוחן והנבחן, בין להיות ולעשות. אין ה"אני" שחווה את מה שקורה. זה להבחין ובאותו זמן להיות מודע לקורה בצורה בלתי קונצפטואלית.
  
בכל נקודה במהלך הבדיקות, בעיקר לאחר סיום של בדיקה של השערה שהעלינו בזמן הבדיקה, ניתן (וכדאי) לעצור. לקחת כמו נשימות (בקשיבות מלאה), להתבונן ולתאר את מה שעשינו ואת מה שהתוכנה עשתה, ולהמשיך בתהליך: לקחת את מה שחווינו בצעדים הקודמים, להתוות את המשך הבדיקה ולבדוק.
ייתכן שבמהלך הבדיקה מישהו יפריע לנו (למרות שעדיף להסדיר שקט מראש, תמיד הבלתי צפוי עלול לצוץ), אולי דאגות שונות יעלו, אולי אפילו זיכרונות טובים. עלינו להיות תמיד במודעות, וגם כשזה קורה, לא לכעוס על עצמנו, אלא להזיז את ההסחות הללו הצידה.
בזמן הפעולות שאנו מבצעים, אנו נמצאים במודעות, ולא בחשיבה. במודעות אנו מאוד ערים למה שקורה, אנו יודעים לבצע את הצעדים שתכננו מראש, אנו קולטים בעזרת החושים את מה שקורה לפנינו, את התנהגות התוכנה. אנו רושמים לפנינו את מה שהרגשנו אבל כצופים מהצד, בלי להזדהות עם הרגשות בשלב זה. עוצרים, מתארים (לעצמנו או בכתב), מתכננים וממשיכים.
אם נתקענו בלי רעיונות, קורה משהו לא ברור, קורה משהו ברור אבל אנו לא מבינים איך הגענו לזה, ועוד מצבים דומים, אנו לא ניתן לכעס להשתלט, לחששות שאולי אנחנו לא מבינים / לא מספיק טובים. לא נרוץ למפתח. פשוט נעצור, נתאר עניינית מה קרה, ננסה לבין בשלווה ובמודעות את המקורות של הבעיה, נחשוב על האיפיון, על מה שאנו יודעים על המוצר, על הטכנולוגיה, וננסה להבין את במקור של מה שראינו. לא מצאנו? גם בסדר, נרשום בצד ונחקור אח"כ.
  
אגב ניתן ליישם זאת גם כשהמנהל שנו אומר לנו משהו שנשמע פוגעני, או כשהילד עושה לפתע משהו שנראה לנו "דווקא". לא נתמסר לרגשותינו. נעצור, ננשום, נתאר מה קרה, ננסה להבין מה בדיוק נאמר או נעשה, נחשוב מה הסיבות למה שקרה וכיצד ניתן לפעול.
  
סוף דבר:
עכשיו, אחרי שקראתם, אני מקווה שזה נתן לכם איזו הבנה על נושא הקשיבות. לטעמי זו הדרך הטובה ביותר שאני מכיר לביצוע בדיקות כאלה, ואולי בכלל להתייחסות לעולם.
בנוסף, אני מקווה שזה יתן לכם המוטיבציה לקרוא עוד על הנושא, והכי חשוב: לנסות את העניין בבדיקות הבאות שתערכו!
  
  
מקורות נוספים:
והדרכה שאני עובד ב"מכון שלום".

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