בדיקות יחידה [Unit Testing], ניתוח קוד סטטי [Static analysis], בדיקות שילוב [Integration Tests], ניטור טכני [Monitoring] וניטור עסקי [KPI - Key Performance Indicators] - כולם הם קווי הגנה חיוניים המיועדים להגן על איכות המוצר אל מול הלקוחות.
ככל שהבדיקות הנ"ל ממוכנות יותר כך עולה איכות התכנה ומתקצר מחזור הפיתוח. יוצא מכך שבדיקות איכות ידניות הן מיותרות ומזיקות לתהליך הפיתוח. בדיקות ידניות לוקחות זמן רב, נוטות להחמיץ דברים מעצם הגורם האנושי הכרוך בהן, וגוזלות משאבים מאוטומציה. הבדיקה הידנית היחידה שצריכה להתבצע היא ע"י מנהל המוצר המאשר את המוצר. לאחר מכן המוצר נבדק בצורה מכנית לאחר כל שינוי קוד.
ככל שהבדיקות הנ"ל ממוכנות יותר כך עולה איכות התכנה ומתקצר מחזור הפיתוח. יוצא מכך שבדיקות איכות ידניות הן מיותרות ומזיקות לתהליך הפיתוח. בדיקות ידניות לוקחות זמן רב, נוטות להחמיץ דברים מעצם הגורם האנושי הכרוך בהן, וגוזלות משאבים מאוטומציה. הבדיקה הידנית היחידה שצריכה להתבצע היא ע"י מנהל המוצר המאשר את המוצר. לאחר מכן המוצר נבדק בצורה מכנית לאחר כל שינוי קוד.
על מנת שהבדיקות והניטור ישמשו כקווי הגנה יש להוסיף להם מערכות התרעה וכלים מבצעיים. מערכות התרעה מקובלות הן שליחת מסרים לטלפונים ניידים ודוא"ל. חלק חשוב בתרבות ארגון ההנדסה הוא להוסיף חיוויים אור קוליים. אצלינו לדוגמה ישנו פינגיוון שצווח שבדיקות נכשלות ואורות צ'קלקה מהבהבים עד שהבעיה מתוקנת. אם בדיקה נכשלת הצוות עוצר הכל וניגש לפתור את הבדיקה. מאחר וכשלונות אילו מטופלים מיד מספר הכישלונות קטן מאוד, ראה ערך תאוריית החלונות השבורים.
מאידך, הבדיקות הם גם חיווים לתהליכים המכניים על פריסת התכנה. אם אחת מבדיקות התכנה (בדיקות יחידה, קוד סטטי או שילוב) נכשלות, מנגנון הפרישה לא מאפשר פעולה. אם תוך כדי פרישת השרות באשכול שרתים אחד השרותים נכשל, הפרישה נפסקת ומיד חוזרים לגרסה הקודמת. אם השרות כבר נפרש ואחד מהחיוויים העסקיים נכשל, השרתים מגולגלים לגרסה הקודמת. דוגמה לחיווי עסקי היא צניחה לא מוסברת בתעבורה, סיבה לבעיה שכזו יכולה להיות שינוי צבע הקישוריות לצבע הרקע באתר.
לצירוף זה של קווי הגנה ופעולות הגנתיות מכניות מיידיות אנו קוראים מערכת חיסונית. מערכת זו מאפשרת לנו לנוע במהירות גבוהה מאוד של עשרות ואף מאות פריסות ביום. מערכת הפריסה מאפשרת למהנדס התכנה להורות על פריסת קוד חדש בסביבת ייצור, כבר בעת שליחת הקוד למאגר (git/svn).