אהבת הפיתוח לבדיקה

אהבת הפיתוח לבדיקה

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

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

זה היה מוזר.

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

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

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

כשהתחלתי ליישם TDD – Test Driven Design/Development זה היה מוזר. רציתי לכתוב קוד והרגשתי שההתעסקות עם הבדיקות מסיטה אותי מהעיקר ומבזבזת לי את הזמן. אבל ככל שעשיתי זאת עוד ועוד משהו השתנה. זה גרם לי להרגיש ביטחון.

במקטע השני של אירוע ה code retreat שהזכרתי קודם ביקשתי מהמפתחים לעשות את אותו תרגיל, אבל הפעם להתחיל עם הבדיקה. הם לא הבינו. אז הראיתי להם. לקחתי פרוייקט ריק וכתבתי בדיקה. התחלתי במשפט ה Assert. השתמשתי בו ב Class שלא קיים וב Methods שלא היו קיימות. ואז כתבתי את הקוד שבא לפני משפט ה Assert בבדיקה. אחר כך, באדיבות ה IDE חוללתי את ה Class וה Methods שהיו חסרים. הארה!

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

זה עובד יפה גם עם קוד לגסי. קראו על זה בספר Working Effectively with Legacy Code, by Michael Feathers. אנחנו גם נכתוב על זה פה.

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

Dev and Test
sitting in a tree,
K-I-S-S-I-N-G.
First comes learning,
then comes practice
then comes software in a baby carriage… 
:-O

כתיבת תגובה

סגירת תפריט