התלמוד של המפתחהתלמוד של המפתח

מסכת בדיקות

כללי הבדיקות

6 הלכות

א

קוד ללא בדיקות הוא קוד שאי אפשר לסמוך עליו. המספק קוד ללא בדיקות — כאילו מכר סחורה ללא אחריות.

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

ב

כל בדיקה בודקת דבר אחד בלבד. בדיקה הבודקת חמישה דברים — כשרה אינה, ובכישלונה לא תדע מה נשבר.

ודרשו חכמים: שם הבדיקה חייב להשלים את המשפט: "כאשר X קורה, אזי Y מתרחש." אם אינך יכול לכתוב משפט כזה — הבדיקה גדולה מדי.

ג

שם הבדיקה חייב לתאר מה היא בודקת — לא איך. "test1", "shouldWork", "checkThis" — פסולים ומביישים.

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

ד

אסור לדלג על בדיקה כושלת. it.skip ו-xit — אסורים אלא לשעת הדחק, ואף אז יש לתעד מדוע ולתקן בהקדם.

בדיקה כושלת שדולגה עליה — היא ידע אבוד. היא אומרת: "כאן יש בעיה" — ואתה אומר לה: "לא רוצה לדעת." ויהי יום ותפרוץ הבעיה בייצור, ולא תהיה בדיקה שתזהיר.

ה

coverage גבוה אינו הוכחה לבדיקות טובות. אפשר לכסות 100% ולבדוק כלום. שאל: מה הבדיקה מוכיחה, לא כמה שורות היא גוללת.

ומעשה היה בצוות שגאה ב-100% coverage — ויהי הבאג, וישאלו: "איך? יש לנו coverage מלא!" וידעו כי coverage מודד כמות, לא איכות.

ו

הבדיקות הן תיעוד חי של הקוד. מי שרוצה להבין מה פונקציה עושה — יקרא את הבדיקות שלה.

שכן README מתיישן, הערות נרקבות, אך בדיקה כושלת — זועקת. הוי אומר: כתוב בדיקות שמסבירות כוונה, לא רק כאלה שעוברות.