לא ניתן לבדוק את כל הקומבינציות - עשו ניתוח סיכונים

קובי הלפרין

הבעיה:

במערכות מורכבות עם הרבה תכונות, משתנים ואפשרויות קלט – מספר הקומבינציות האפשריות גדל בצורה אקספוננציאלית.
לדוגמה: אם יש 5 שדות קלט עם 10 ערכים אפשריים לכל אחד, יש כבר 100,000 קומבינציות שונות (10⁵).

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

הפתרון: ניתוח סיכונים (Risk-Based Testing)

במקום לבדוק הכול – בודקים באופן ממוקד ואינטליגנטי לפי סיכונים.

מהו סיכון?

  • סיכון = חומרה × הסתברות

  • כלומר, אנחנו מעריכים:

    • חומרה (Severity) – כמה נזק ייגרם אם תהיה תקלה?

    • הסתברות (Likelihood) – מה הסיכוי שהתקלה תתרחש בפועל?

איך מיישמים את זה?

  1. אוספים מידע: מה הדרישות? מה קריטי למשתמשים? מה השתבש בעבר? מה שונה בגרסה הזו?

  2. ממפים אזורים קריטיים במערכת:

    • אזורים עם חישובים פיננסיים

    • אזורים עם השלכות משפטיות או אבטחת מידע

    • תהליכים עסקיים מרכזיים

  3. מעריכים סיכון עבור כל אזור או תרחיש:

אזור / תכונה

חומרה

הסתברות

רמת סיכון

תשלום בכרטיס אשראי

גבוהה

בינונית

גבוהה

שינוי תמונת פרופיל

נמוכה

גבוהה

בינונית

מחיקת משתמש לצמיתות

גבוהה

נמוכה

בינונית



  1. קובעים עומק בדיקה לפי רמת הסיכון:

    • סיכון גבוה → בדיקות רבות, כולל בדיקות קצה, בדיקות עומק, תרחישים חריגים.

    • סיכון בינוני → סט בדיקות סטנדרטי.

    • סיכון נמוך → אולי רק בדיקה אחת או כלל לא.

כלים וטכניקות משלימות:

  • Pairwise Testing: כלי שמפחית את כמות הקומבינציות על ידי בדיקה של זוגות ערכים (מכסה המון באפס מאמץ).

  • Mind Mapping או Risk Matrix: לויזואליזציה של הסיכונים.

  • שיתוף עם לקוחות / Product: הם יודעים מה באמת חשוב.

דוגמה פשוטה:

במערכת לקביעת תורים:

  • תאריך + שעה + סוג שירות + מיקום + אמצעי תשלום.

  • אי אפשר לבדוק את כל השילובים, אז:

    • אם אמצעי תשלום = כרטיס אשראי, יש סיכון גבוה אם משהו משתבש.

    • אם שירות = ייעוץ טלפוני, אולי הסיכון נמוך יותר.

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