Wednesday, August 9, 2023

Cargo-cult testing


  עברית

Cargo cults were a set of practices and beliefs that sprang in Melanesia post WWII, where the native population saw the westerners arrive, set up some rudimentary airfield, landing stripes, control tower, etc. and started getting supplies by planes. When the war was over, the natives tried to achieve the same results by maintaining their own airfields, trying to lure the gods to send them food and weapons as well. They were missing only one part: The people sending supplies from the other side of the airplane flight. Since it was coined, this term was used to indicate situations where someone is mimicking the form but missing out the essence.

And how does this relate to software testing? Well, every now and then there's a public talk on "how to get hired". Naturally, talks like this focus on people with less experience and so, eventually, someone will spurt "go and test a public website or product". Sounds legit, right? it's just like coding - you can demonstrate your skill by creating a useless pet project and present it to whomever it is you might want to hire you. 

Just like the cargo cults, however, there's only one part that's missing - The actual, professional testing. Ask any experienced tester and they'll be able to tell you that the important things are not test cases ran, bug reports written or the excessive documents produced. The real value is in the conversations you have, in bringing a different perspective to reviews, in translating between different functions, highlighting the risks and improving design by presenting just the right question at the right time. When you work (effectively) as a tester on a product you gain a profound understanding of its inner workings, of its tech stack, architecture and technical debt. You gain some insight on the business side: what's important, what's less urgent, what sort of problems we don't care enough to bother fixing and what properties of the product are the ones that help sell it. You then use this understanding in the conversations and test design.

Those parts are completely missing from the so0called "experience" you'll get if you follow such advice. If you are investing your time on that, or even on the paid version in crowdsourced testing, you might be gaining or demonstrating some technical capabilities, but you are not dealing with nor growing the core skills required in a testing position. You are not negotiating schedule difficulties, you are not involved in prioritization debates and you are smashing your keyboard without the slightest idea of the priorities of the company whose product you are testing or the entire iceberg beneath the nice looking website you chose as your target.

 

Or, if we sum it all in a click-baity fashion: Good software testers shouldn't waste their time testing.

על בדיקות ועל כתות מטען


 English

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

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

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

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

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