מדוע ולמה Unit Tests ו- TDD

מדוע ולמה Unit Tests ו- TDD

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

unit tests, לעומת Integration tests, הם קצרים, מהירים ולא דורשים סביבה מיוחדת. מאות ואלפי unit tests רצים בשניות בודדות ולכן אין בעיה להריץ אותם עוד ועוד. למעשה כל הזמן. יש plug ins שמזהים שינוי כל שהוא בקוד ומיד מריצים את הבדיקות ונותנים למפתחים פידבק מהיר.

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

מה עושים? 

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

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

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

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

תודה.

נ.ב. ומה אם הקוד מסובך וקשה להוסיף בדיקות? זה כבר קוד לגסי ויש סרטון קטן שמסביר מה לעשות במקרה כזה. https://youtu.be/WShJpzFW4JY

כתיבת תגובה

סגירת תפריט
יש לכם שאלה? כתבו לעודד המרצה