דילוג לתוכן הראשי
Globalbit
חזרה לבלוג
QA ובדיקותשיטות עבודה

Shift-Left Testing: לתפוס באג של 500 ש״ח לפני שהוא הופך לשריפה של 50,000 ש״ח

פורסם סשה פלדמן
Shift-Left Testing: לתפוס באג של 500 ש״ח לפני שהוא הופך לשריפה של 50,000 ש״ח

בקצרה: באג מתייקר בכל שלב שהוא עובר בלי שתפסו אותו. בדוגמה של NIST מ-2002, באג שעולה יחידה אחת לתקן בשלב הדרישות עולה פי 30 אחרי השחרור. Shift-Left מקדים את בדיקות האיכות: קריטריוני קבלה שאפשר לבדוק כבר בתכנון הספרינט, Pre-commit Hooks, סקירת קוד שמתמקדת באיכות, שערים ב-CI/CD וסביבות בדיקה זמניות. אלה חמש שיטות עבודה הנדסיות שחידדנו ביותר מ-200 פרויקטים, ואפשר להטמיע כל אחת מהן בנפרד.

המכפיל שאף אחד לא מתקצב

באג שנתפס בשלב הדרישות הוא שיחה של חמש דקות. אותו באג ב-Production הוא לילה לבן לחצי צוות.

הגרסה המתועדת ביותר של הדפוס הזה מגיעה ממחקר של NIST על בדיקות תוכנה מ-2002. בדוגמה שם, באג שעולה יחידה אחת לתקן בשלב הדרישות והתכנון עולה פי 5 בשלב כתיבת הקוד, פי 10 בבדיקות האינטגרציה, פי 15 בבטא ופי 30 אחרי השחרור. טבלה דרמטית יותר, עם פי 100 ב-Production, מסתובבת ברשת בשם ה-Systems Sciences Institute של IBM, אבל את המחקר המקורי אי אפשר למצוא.

אלה לא מספרים תיאורטיים. בחברת טכנולוגיה ישראלית ממוצעת, יחידה אחת שווה בערך 500 ש״ח: שעה של מהנדס שכותב תיקון ובדיקה. אותו באג ב-Production פירושו תקלה, דיבאג בין כמה שירותים, Hotfix, פריסת חירום, תחקיר, ושעות של צוות התמיכה. 50,000 ש״ח הם עלות מציאותית לתקלה ב-Production בחברה בינונית.

ב-2025 עקבנו אחרי זה אצל הלקוחות של Globalbit: חברות שעובדות ב-Shift-Left השקיעו 40% פחות זמן הנדסי בבאגים מחברות שבודקות רק אחרי הפיתוח. הן כותבות אותה כמות באגים. הן פשוט תופסות אותם כשהתיקון עוד זול.

Shift-Left בפועל: חמישה שינויים ב-Pipeline

רוב המאמרים על Shift-Left מתארים פילוסופיה. אנחנו נתאר את השינויים ההנדסיים עצמם, אלה שעושים ב-Pipeline. יש חמישה.

1. קריטריוני איכות כבר בתכנון הספרינט

לפני שמפתח כותב שורת קוד, הצוות מגדיר איך נראית איכות ב-Story הזה.

השיטה: כל User Story כולל קריטריוני קבלה שכתובים כטענות שאפשר לבדוק. "תהליך התשלום צריך לעבוד" לא מספיק. כותבים: "משתמשים מסיימים תשלום בכרטיס אשראי בפחות מ-60 שניות, וההזמנה מופיעה בדשבורד הניהול תוך 5 שניות."

מה זה מונע: דרישות עמומות הן המקור היקר ביותר לבאגים. המפתח מממש את מה שהוא חושב שהפיצ׳ר צריך לעשות. ה-QA בודק את מה שהוא חושב. אף אחד מהם לא קולע למה שמנהל המוצר התכוון. כל פער כזה שורף 2 עד 3 ימי ספרינט, ואנחנו רואים אותו ב-30% עד 40% מה-Stories שאין להם קריטריוני קבלה ברורים.

2. שערי איכות לפני ה-Commit

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

ההגדרה ב-Pipeline: - Pre-commit Hooks: Linting, פורמט ובדיקת טיפוסים. הם רצים בפחות מ-10 שניות, ותופסים סוג שלם של באגים לפני שמישהו בכלל רואה את הקוד.

Background

רוצים לתפוס באגים לפני שהם מתגלגלים?

את Shift-Left לא קונים בחנות כלים. בונים מחדש את תהליך העבודה, וכבר עשינו את זה בצוותים בגודל שלכם.

  • Pre-push Hooks: בדיקות Unit רק לקבצים שהשתנו. מהיר, ממוקד, ותופס רגרסיות מיד.

כלים: Husky ל-Git Hooks,‏ lint-staged כדי להריץ Linters רק על קבצים שהשתנו, ו-tsc --noEmit לבדיקת טיפוסים ב-TypeScript.

מה זה מונע: כל PR שמגיע לסקירה כבר עבר בדיקת טיפוסים, Linting ובדיקות Unit. הסוקרים לא צריכים להעיר על דברים שמכונה אמורה לתפוס. בצוותים שעבדנו איתם, Pre-commit Hooks הורידו את מספר ההערות בסקירות הקוד ב-25% עד 30%.

3. סקירת קוד שמסתכלת גם על איכות

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

הוסיפו לצ׳קליסט של סקירת הקוד: - יש בדיקות לקוד החדש? הן בודקות התנהגות, או את המימוש? - יש טיפול בנתיבי שגיאה? מה קורה כשקריאת API נכשלת, כשמסד הנתונים נופל, או כשהקלט לא תקין? - הקוד משנה התנהגות קיימת? אם כן, הבדיקות הקיימות עודכנו? - אפשר בכלל לבדוק את הקוד הזה? (קוד שקשה לבדוק מתוכנן בדרך כלל גרוע.) - בקוד שנכתב ב-AI: הוא עומד בדפוסי הארכיטקטורה של הפרויקט?

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

4. בדיקות אוטומטיות ב-CI/CD

ה-Pipeline צריך לאכוף איכות אוטומטית בכל שלב. אף אחד לא צריך לזכור להריץ בדיקות: המערכת פשוט מסרבת לשחרר קוד שלא נבדק.

ארבעת השערים ב-CI/CD:

שערמתימה רץSLAאם נכשל
בדיקת PRבכל Pull RequestLinting, בדיקות Unit ובדיקות Integrationפחות מ-5 דקותאי אפשר לעשות Merge
לפני פריסהאחרי Merge ל-mainכל חבילת ה-E2Eפחות מ-15 דקותהפריסה נחסמת
אחרי פריסהאחרי פריסה ל-Productionבדיקות Smokeפחות מ-2 דקותRollback אוטומטי
מתוזמןכל לילהבדיקות ביצועים וסריקות אבטחהפחות משעההתראה על ממצאים

העיקרון: בדיקות שחוסמות פריסה חייבות להיות מהירות ואמינות. אם חבילת ה-E2E רצה 45 דקות, המפתחים יעקפו את השער. אם 10% מהבדיקות לא יציבות, הצוות יתחיל להתעלם מכישלונות. השקיעו במהירות וביציבות.

5. בדיקות כבר בסביבת הפיתוח

תנו למפתחים להריץ בדיקות Integration מקומית או בסביבות זמניות. אם כדי לבדוק צריך לפרוס לשרת Staging משותף, המפתחים לא יבדקו עד שה-Story "גמור".

ההקמה: סביבה זמנית לכל PR (Vercel Preview Deployments,‏ Firebase Preview Channels, או Docker Compose לשירותי Backend). כל PR מקבל סביבה מבודדת משלו, עם מסד נתונים משלו.

ההשפעה: המפתחים תופסים בעיות אינטגרציה תוך כדי פיתוח, ולא בסקירת הקוד או בשלב ה-QA. בפרויקטים שלנו שעובדים עם סביבות זמניות, בעיית ה"אצלי זה עובד" ירדה ב-80%.

איך יודעים ש-Shift-Left עובד

אלה המדדים שמוכיחים את זה:

מדדלפני Shift-Left (טיפוסי)אחרי Shift-Left (90 יום)יעד
שיעור הדליפה ל-Production30% עד 50%10% עד 15%פחות מ-10%
עלות תיקון באג (חציון)5,000 ש״ח1,200 ש״חפחות מ-1,000 ש״ח
זמן מחזור של PR3 עד 5 ימיםיום או יומייםפחות מיומיים
תקלות ב-Production בחודש8 עד 122 עד 4פחות מ-3
תדירות פריסותפעם בשבועכל יוםפעם ביום ויותר

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

ההתנגדויות בארגון, ומה עונים להן

"אין לנו זמן לכתוב בדיקות"

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

"ה-QA יתפוס את זה"

QA בסוף התהליך תופס הרבה באגים. הבעיה היא המחיר של אלה שחומקים, והמחיר של באג שמתגלה אחרי שהמפתח כבר עבר ל-Story הבא. Shift-Left לא מחליף את ה-QA. הוא מקטין את הכמות ואת החומרה של מה שה-QA צריך לתפוס.

"נוסיף בדיקות אחר כך"

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

שאלות נפוצות

מה המינימום של Shift-Left לסטארטאפ? Pre-commit Hooks (Linting ובדיקת טיפוסים), 5 בדיקות Smoke בכל פריסה וקריטריוני איכות בתכנון הספרינט. ההקמה לוקחת יום או יומיים, והיא תופסת הרבה באגים עוד לפני שהם יוצאים מהמחשב של המפתח.

איך עושים Shift-Left בלי להאט את המפתחים? דואגים שהבדיקות המהירות יהיו מהירות באמת. Pre-commit Hooks צריכים לרוץ בפחות מ-10 שניות, ובדיקות PR בפחות מ-5 דקות. אם ה-CI שלכם רץ 30 דקות, תקנו את המהירות שלו לפני שאתם מוסיפים בדיקות. מפתחים לא מתנגדים לבדיקות. הם מתנגדים לחכות.

Shift-Left עובד גם עם קוד שנכתב ב-AI? שם הוא חשוב עוד יותר. קוד שנכתב ב-AI יוצא מהר יותר, ולכן בלי שערי איכות מוקדמים גם הבאגים מגיעים ל-Production מהר יותר. הוסיפו לבדיקות ה-PR סריקת אבטחה ייעודית לקוד AI, ו-Mutation Testing לריצה הלילית. אנחנו מתמחים ב-Pipelines של בדיקות לפיתוח בעידן ה-AI.

ומה אם אין לנו אף בדיקה כרגע? התחילו משכבת ה-Smoke שתיארנו כאן ומ-Pre-commit Hooks. אל תנסו לעבור מאפס לכיסוי מלא בספרינט אחד. המדריך שלנו לבניית צוות QA נותן תוכנית של 90 יום, שבוע אחרי שבוע. או שפשוט תדברו איתנו: בנינו QA מאפס הרבה פעמים.

[ צרו קשר ]

ספרו לנו מה אתם בונים.

יותר מ-250 ארגונים סומכים עלינו. נחזור אליכם תוך יום עסקים אחד.

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

קבעו שיחת היכרות ←