בדיקות שתופסות משהו

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

קוד ואיכות · בדיקות · tests · איכות · מקרי קצה

מתי הוא נכנס לפעולה

---
name: tests-that-catch
description: "How to write tests that find real bugs: edge cases and error paths first, deterministic, no mocking of the code under test, and never weaken a failing test to make it pass. Use when writing tests, fixing a failing test, or adding coverage."
---

# בדיקות

## סדר

1. מקרי קצה: קלט ריק, פריט בודד, גודל מרבי, אפס, שלילי, null.
2. גבולות: בדיוק על הגבול, אחד מתחת, אחד מעל.
3. קלט לא תקין שמשתמש אמיתי באמת מייצר.
4. מסלולי שגיאה: מה קורה כשתלות נכשלת או מחזירה כלום.
5. המסלול התקין, אחרון ובקצרה.

## כללים

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

## כשבדיקה נכשלת

**קודם בדוק אם היא תפסה בעיה אמיתית.** בדיקה שנכשלה אחרי שינוי היא
לעיתים קרובות בדיקה שעשתה את עבודתה.

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

## כשאי אפשר לבדוק

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

## בסוף

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

איך מתקינים

  1. צרו תיקייה בשם tests-that-catch בתוך ‎.claude/skills/‎ בפרויקט, או בתיקיית הבית לשימוש בכל הפרויקטים.
  2. שמרו בתוכה את הקובץ בשם SKILL.md.
  3. זהו. אין צורך להפעיל כלום, והוא ייטען לבד כשהמשימה תתאים לתיאור.