הערך האסטרטגי של Test-Driven Development בהנדסת מדע גדול

פיתוח מונע Test-oriented (TDD) התפתח מפרקטיקה נישה למתודולוגיה של קבוצות הנדסיות שמנהלות מערכות מורכבות, קריטיות למשימה (TDD) בפרויקטים בקנה מידה גדול - שבו מאות מפתחים משתפים פעולה על פני אזורי זמן מרובים, ועלות פגם יחיד יכול להגיע למיליונים של דולרים - TDD מציעה גישה מובנית לבניית אמינות לבסיס הקוד הראשון של קוד במקום לטפל בבדיקה לאחר בחינה, לאחר מכן, כלומר, לא ניתן לכתוב את מחזור מותאם אישית, אך לא ניתן לקוד, אלא גם כן, אך לא ניתן לשחזר את המאפיין, אלא גם את המאפיין, אלא גם כן, אלא גם את המאפיין, אך לא קבוע, אלא גם כן, לאחר מכן, הוא כותב את המאפיין, הוא כותב את המאפיין, אך אינו משקף את המאפיין מחדש, אלא גם כן, אלא גם את המאפיין מחדש, אלא גם את המאפיין, אך אינו משקף את המאפיין, הוא כותב את המאפיין מחדש, אך אינו משקף את המאפיין מחדש, אלא גם את המאפיין, אלא גם את המאפיין מחדש, אלא גם את המאפיין מחדש, אלא גם את המאפיין, אלא גם את המאפיין, אלא גם את המאפיין מחדש של רצף המאפיין מחדש, הוא אינו משקף את המאפיין, אלא

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

אתר אינטרנט: Global Financial Services Platform

רקע ואתגר

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

אימוץ גישה

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

תגית: measurable Outcomes

  • (ב) תועדו פגמים בפלישה של 30% מההתמ"ל:1 בכל הפלטפורמה בשנה הראשונה של רולט מלא.
  • (FLT:0) מפתחי ההקמה של זמן משש שבועות עד שלושה שבועות של FLT:1, כי חבילת הבדיקה שימשה כתיעוד מעשי של התנהגות מכוונת.
  • (FLT:0) זמן קל לעדכונים קריטיים ירד ב-40%.03.10.1 צוותים יכלו לבטח לשלוח תיקוני באגים ללא ציפייה לבדיקות תגמול ידני.

שיעורים עבור קבוצות אחרות

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

מקרה מחקר 2: Flight Control Software for Aerospace Systems

רקע ואתגר

חברת הנדסה אווירית מפתחת תוכנת בקרת טיסה אלחוטית מול אחד הסטנדרטים האיכותיים התובעניים ביותר בתעשייה: DO-178C רמה A. כל פגם תוכנה יכול לגרום לכישלון קטסטרופלי. הגישה המסורתית של מפל המעורבת בכתיבת מסמכי עיצוב נרחבים, ולאחר מכן בדיקה - לעתים קרובות חודשים לאחר מכן, Defects שנמצאו במהלך בדיקות שילוב יכול לדרוש שכפול זה שנים.

אימוץ גישה

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

תגית: measurable Outcomes

  • (ב) ⁇ 0 (FLT:0) גילוי Fault השתנה באופן דרמטי.
  • (FLT:0) אינטגרציה ובדיקת המערכת הופחתו על ידי 60%.FLT:1 כי מודולים נבדקו בבידוד לפני האינטגרציה, ממשק לא מתאים הפך נדיר.
  • (FLT:0) מחזורי ביקורת הסמכה לקצר על ידי כמעט 50%.IRFLT) 1 אודיטורים יכולים לבדוק ישירות את חבילת הבדיקה כדי לאמת כיסוי דרישות, צמצום הצורך בחפצים ידניים.

שיעורים עבור קבוצות אחרות

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

מחקר: Global E-Commerce Marketplace

רקע ואתגר

פלטפורמת מסחר אלקטרוני ידועה המשרתת מאות מיליוני משתמשים חוו הפרעות שירות תכופות במהלך אירועי קניות שיא כמו Black Friday. הארכיטקטורה המיקרו-שירותי המופצות שלהם - יותר מ-2,000 שירותים - עשו בדיקות ידניות לא מעשיות.תרבות ההנדסה ערך היסטורי מהירות על איכות, והצוותים לא היו מעוניינים לאמץ שיטות שעשויות להאט את המסירה.

אימוץ גישה

במקום לאכוף את TDD org-wide, החברה יצרה צוות ייעודי "אפשרות איכותית" שעבד עם קבוצות בודדות כדי זרע שיטות TDD. צוות זה פיתח קבוצה של תבניות בדיקה שניתן לשנות את האפשרות לספרייה משותפת שהפכה את זה קל יותר עבור מפתחים לכתוב בדיקות נכונות במהירות.הם גם רצו פריצות פנימיות שבו קבוצות להתחרות כדי לראות את הבדיקות שלהם תפסו את החרקים לפני הפריסה מתוגמלת, אשר שיפרו את קצב הבדיקה או הפחתת של צוותים של צוותים של צוותים של צוותים של צוותים של טיפול ישיר, על פני סיקור חיובי, על פני סיקור, או סיקור ידני, על פני שנים של צוותים.

תגית: measurable Outcomes

  • תדירות התדירות הגבוהה ביותר של אירועי שיא ירדה ב-70%.10.10.1:1 זרימת העסקה הקריטית ביותר הייתה מכוסה על ידי סוויטות בדיקה נרחבות, אשר רצו לפני כל שחרור.
  • מהירות המשלוח של FLT:0 (FLT:0) עלתה ב-25%.IQFLT:1, בעוד שבדיקות כתיבה הוסיפו לראשונה זמן, הפחתת בעיות של פיזור ותוקפנות יותר מאשר פיצוי.
  • שיתוף הפעולה של צוות המחקר של FLT:0Cross-team השתפר.FIRLT:1 מבחנים הפכו לשפה משותפת; צוותים יכולים להבין טוב יותר אילו שירותים אחרים צפויים מהממשקים שלהם.

שיעורים עבור קבוצות אחרות

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

מקרה מחקר 4: רשומות בריאות אלקטרוניות (EHR)

רקע ואתגר

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

אימוץ גישה

החברה השקיעה רבות בתרבות של איכות מתחילת פרויקט גרינפילד.כל צוות תכונה אימצה את TDD כפרקטיקה שאינה ניתנת להשגה.מפתחים כתבו בדיקות שסימולות את זרימת העבודה הקלינית - קבלה של חולים, בדיקות תוצאות מעבדה, פיוס תרופות - לפני כתיבת כל קוד יישום.חבילת הבדיקה הופעלה נגד גירסאות מגודות של ממשקי בית חולים חיצוניים כדי להבטיח כי המערכת יכולה לטפל במקרים כגון נתונים שאינם שלמים או מזהה בזמן ניתוח נתונים (או מעקב) בנוסף לעדכון מסורתי.

תגית: measurable Outcomes

  • (FLT:0)Zero פגמים משמעותיים במינוף דווחו בייצור במהלך 18 החודשים הראשונים של המבצע.
  • (ב) בדיקות אינטגרציה עם בתי חולים בטייסים הושלמו ב-30% פחות זמן FLT:1 כי הממשקים כבר אושרו על ידי הבדיקות.
  • תוצאות שביעות הרצון של FLT:0 (Developer שביעות רצון השתפרו:1), סקר רטרוספקטיבי הראה כי 91% מהמהנדסים הרגישו שחבילת המבחן העניקה להם אמון כדי לספק ולהרחיב את המערכת ללא חשש לשבור פונקציונליות קיימת.

שיעורים עבור קבוצות אחרות

מקרה הבריאות מדגיש את החשיבות של בדיקות ספציפיות לתחום כאשר משתמשים ב- TDD. פשוט בדיקות פעילות CRUD הגנרית אינה מספיקה; בדיקות צריכות לשקף את זרימת העבודה העסקית האמיתית ואת תנאי הקצה הייחודיים לתחום.זה גם מראה כי TDD הוא יעיל ביותר כאשר הוא מאומץ מההתחלה של הפרויקט; בדיקות רטרו-התאמה על קוד מורשת הוא אפשרי אבל דורש מאמץ משמעותי יותר.

שיעורים חשובים ממחקרים אלה

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

התחל קטן, ערכי Prove, ואז סולם

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

השקעה מהירה, תשתית בדיקה אמינה

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

שיטות קישור לדרישות או ערך עסקי

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

תמיכה בשינוי תרבותי עם ריכוזים וכלי

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

מדד מה שחשוב

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

מלכודות נפוצות וכיצד להימנע מהם

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

בדיקות מזויפות

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

מבחן או מתחת לעריכה

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

התנגדות למהנדסים בכירים

מפתחים מנוסים שהצליחו ללא TDD עשויים להיות הספקנים החזקים ביותר.כתובתם דורשת נתונים – להראות להם את המדדים מהטייס.Let them to TDD על תכונה קטנה בסיכון נמוך לפני קבלת פסק דין.במקרים מסוימים, תכנות עמיתים עם חובב יכול לשנות את המוח מהר יותר מכל סיפון שקופיות.

הפרקטיקה הטובה ביותר לסקר TDD ברחבי ארגונים גדולים

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

  1. (FLT:0) צוות אלוף TDD.OVAFLT:1) קבוצה זו צריכה לכלול מתרגלים מנוסים שיכולים לאמן אחרים, לחדד את שיטות, ולתמיכה בתשתיות הדרושות.
  2. (FLT:0) תוכנית אימוץ ברורה, שלבית (Halph:1) לזהות את 10-20% הראשונים של קבוצות הפתוחות ביותר ל-TDD.
  3. (ב) ,0) בניית ספריית כלי מבחן משותפת.
  4. (ב) [15] , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  5. (FLT:0) לבדוק איכות במהלך ביקורות קוד.FLT:1 , לחפש בדיקות כי הם יותר מדי, רדודה מדי, או כיסוי כפול. לטפל קוד מבחן כחפץ ברמה הראשונה.
  6. (FLT:0) הצלחות פומביות.FLT:1 כאשר צוות מקטין את שיעור הפגם שלו ב-50% באמצעות TDD, לשתף את הסיפור הזה בפגישות ובידיעונים של החברה.

מסקנה

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

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


מקור:0 (ב) מקורות:

  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • ^ Martin Fowler: Test Driven DevelopmentofLT 1
  • מחקר בנושא TDD בהקשר תעשייתי (ResearchGate)