• פרסם תאריך
    26 בנובמבר 2024
  • שיתוף

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

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

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

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

AI גנרטיבי לפיתוח מבחן ראשון 

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

  1. מבחנים שנכתבו על ידי מפתחים: מפתחים מתחילים בכתיבת מבחני היחידות הראשוניים, תוך ציון התוצאות הרצויות עבור הקוד שלהם.
  2. קוד שנוצר על ידי AI: AI גנרי קורא את בדיקות היחידות הללו ומפיק את הקוד הדרוש כדי לעבור אותם. אם הקוד פועל בהצלחה, הוא נשמר בדיסק. אם לא, ה-AI מייצר דוח שגיאה ומנסה לייצר שוב את הקוד הנכון, תוך יצירת לולאה עד שהבדיקות יעברו. על ידי שילוב בינה מלאכותית באופן זה, מפתחים יכולים להבטיח שהקוד שלהם נבדק ומאומת ביסודיות, ולמזער את הסיכון לשגיאות.
Ekran Resmi 2024-11-04 13.29.43.png

היתרונות של שימוש בבינה מלאכותית גנרטיבית ב-TDD

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

אתגרים ופתרונות פוטנציאליים

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

משוב יישם בינה מלאכותית גנרית ב-TDD

Ekran Resmi 2024-11-04 13.31.52.png

מנגנון משוב

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

שיפור איטרטיבי

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

בדיקה סופית

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

למעשה, זרימת העבודה תהיה כדלקמן:

  1. היזם כותב את unit tests.ev
  2. ה-AI קורא את הבדיקות הללו ומייצר את הקוד הדרוש.
  3. אם הבדיקות פועלות בהצלחה, הקוד נשמר. אם לא, נוצר דוח שגיאה, וה-AI מנסה לתקן את הקוד בלולאה.
  4. האוטומציה הראשונית הזו יכולה לייצר קוד שנוטה לשגיאות, וזה המקום שבו מנגנון המשוב נכנס לתמונה.
  5. מפתחים כותבים את בדיקות היחידה, וסוכן המפתחים מייצר את הקוד והשיטות הנדרשים.
  6. סוכן סוקר קוד סוקר את הקוד ושולח משוב לסוכן המפתחים.
  7. סוכן המפתחים מחדד את הקוד על סמך המשוב ומגיש אותו מחדש לבדיקה.
  8. מחזור זה נמשך עד שסוכן סוקר הקודים מאשר את הקוד.
  9. לאחר האישור, בדיקות היחידה מופעלות. אם מצליח, הקוד נשמר; אם לא, נוצר דוח שגיאה, והלולאה נמשכת.

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

סיכום

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

כיוונים עתידיים

ישנם שלושה פריטים שאנו מתכננים לבנות על גישה זו:

  • הרחבת תמיכת השפה: בעוד שהתמקדנו ב-Java, ניתן להרחיב מתודולוגיה זו לשפות אחרות כמו Python, JavaScript ועוד.

  • יצירת בדיקות אוטומטיות: אנו יכולים לבקש מ-Generative AI לכתוב את המבחנים בהתבסס על דרישות ברמה גבוהה שסופקו על ידי מפתחים במקום לבצע בדיקות בכתב ידני. 

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

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