רווחים:
- יכולת לצמצם באג למופע הקטן ביותר שניתן לשחזור ולהעביר אותו ל-AI עם הוכחה מלאה
- יכולת לבחון השערות מבוססות ראיות עם הבקרה הזולה ביותר ולמצוא את הסיבה השורשית
- היכולת לפתור את הסיבה השורשית ולאבטח אותה באמצעות מבחן רגרסיה במקום תיקון התסמין
איתור באגים הוא תהליך לגלות מדוע תוכנה מתנהגת באופן בלתי צפוי ולתקן אותה. זו העבודה שבה מפתח מבלה הכי הרבה זמן ומתעייף הכי הרבה; כי לרוב הטעות היא לא במקום שבו היא מופיעה, אלא מסתתרת כמה צעדים מאחור. AI הוא שותף חשיבה רב עוצמה שמאיץ את המחקר הזה - אבל רק אם אתה נותן לו את ההוכחות הנכונות. איתור באגים ללא ראיות הוא התחום שבו AI מייצר הכי הרבה הזיות.
ביחידה זו, אנו מבססים זרימה ממושמעת מיצירת השגיאה ועד הגעה לגורם השורש: הבהרת הסימפטום, איסוף ראיות (הודעת שגיאה, עקבות מחסנית, יומן, כניסה), יצירת השערה, בדיקת ההשערה ואימות התיקון. AI עוזר בכל שלב; אבל ההחלטה ה"מתוקנת" מתקבלת על ידי ראייה שהבאג למעשה נעלם.
למה הוכחות הן הכל?
LLM לא רואה שגיאה כמו שאתה רואה; הוא יודע רק מה שאתה אומר לו. משפט כמו "האפליקציה קורסת" לא נותן לדגם כמעט מידע, והמודל ממלא את החסר בתחזית - כלומר הזיה. בתורו, הודעת השגיאה המלאה, מעקב מחסנית - פירוט של אילו שיחות פונקציה התרחשה באמצעות השגיאה, הקלט שהפעיל את השגיאה, ומה הצפוי וכו'. בהינתן התנהגות נצפית, המודל יכול לדרג הסתברויות אמיתיות.
באיתור באגים, חשבו על AI כעוזר לבלש: ככל שתציג יותר ראיות, כך ההשערה שהיא מייצרת מדויקת יותר. אם אין ראיות, העוזר רק ינחש ועלול להוביל אותך למסלול הלא נכון.
טיפ: לפני העברת באג ל-AI, צמצם אותו לדוגמא הקטנה ביותר שניתן לשחזר. הקוד והקלט הקטנים ביותר שמפעילים את השגיאה מקלים באופן קיצוני על העניין הן עבורך והן עבור הדגם; לרוב במהלך הפחתה זו אתה מוצא את הסיבה בעצמך.
שלב אחר שלב: זרימת ניתוח סיבת השורש
- הבהירו את הסימפטום. "מה קורה, מה ציפית שיקרה?" כתוב את השניים במשפט אחד.
- אסוף ראיות. הודעת שגיאה מלאה, מעקב מחסנית, שורות יומן רלוונטיות, הזנת הפעלה, מידע גרסה.
- הפק את ההשערה. מ-AI "3 סיבות אפשריות שמסבירות את התסמין הזה וכיצד אני בודק עבור כל אחת מהן?" לִשְׁאוֹל.
- בדוק תחילה את ההשערה הזולה ביותר. הוסף יומן, הדפס ערך, הרץ בדיקה. האם הראיות מאששות את ההשערה?
- תקן את הסיבה השורשית, לא את הסימפטום. במקום להשתיק את הסימפטום עם מדבקה, לטפל בשורש.
- אמת והוסף בדיקות רגרסיה. ראה את השגיאה נעלמת; לאחר מכן כתוב מבחן שיתפוס את השגיאה הזו כדי שהיא לא תחזור.
שלושה מיני מארזים
מקרה 1 - עקבות המחסנית הובילה לקובץ הנכון. אפליקציה החזירה שגיאה 500 בבקשות מסוימות. המפתח נתן את מעקב המחסנית המלא ואת הבקשה המפעילה ל-AI; המודל שיער שהשגיאה נגרמה על ידי ערך None בשכבת ניתוח תאריך. המפתח הוסיף יומן לשורה זו, אימת אותו ופתר אותו תוך 15 דקות; 2 שעות בזבזו יום קודם עם ניסויים לא מוכחים.
מקרה 2 - הזיה הובילה למסלול שגוי. מפתח אחר פשוט כתב "חיבור מסד הנתונים נופל". ה-AI האשים הגדרת מאגר חיבורים ללא כל ראיה; המפתח בילה 40 דקות בהתעסקות עם ההגדרה הזו. הסיבה האמיתית הייתה פסק זמן בצד הרשת ונחשפה רק על ידי התבוננות ביומנים. לקח: השערה שנלקחה ללא ראיות היא רק סבירה, לא אמינה.
מקרה 3 - נתפסה שגיאה מתקלפת. היה מבחן שמדי פעם נכשל. ה-AI קיבל את קוד הבדיקה, הודעת הכשל והמידע "לפעמים הוא עובר, לפעמים הוא נכשל"; המודל הצביע על תלות משותפת בזמן/סדר של הבדיקות. הבדיקה אישרה כי הבדיקה התבססה על השעון המקומי של המערכת. ברגע שהשעון תוקן (לעגו), הבדיקה הפכה יציבה.
ארבע תבניות הניתנות להעתקה
הפקת השערות מבוססות ראיות:
אני מאתר באגים. עדות להלן.- התנהגות צפויה: {{צפוי}}- התנהגות נצפית: {{נצפתה}}- הודעת שגיאה / עקבות מחסנית: {{trace}}- קלט מפעיל: {{input}}- סביבה/גרסה: {{version}}רשום את 3 סיבות השורש הסבירות ביותר שמסבירות סימפטום זה. לכל אחד: איך אני בודק (הבדיקה הזולה ביותר) ואיך לתקן את זה אם זה נכון. אם הראיות אינן מספיקות, ספר לי איזה מידע נוסף אתה צריך.
פירוש מעקב הערימה:
קרא את מעקב הערימה הזה. הבדיל בין איזו שורה מתחילה כנראה השגיאה (השורש) ואיזה קווים הם רק המשך של השרשרת. הצע 1-2 מקומות לחפש תחילה. קוד קשור:{{code}}Trace:{{trace}}
חיסור רפרו מינימלי:
הקוד למטה מייצר שגיאה. צמצם אותו למופע הקטן ביותר שעדיין מפעיל את השגיאה אך משליך כל דבר מיותר. אל תניח שכל חלק שאתה מסיר לא משפיע על השגיאה, אבל הוסף הערה שאומר "אם השגיאה נעלמת כאשר אתה מסיר את זה, זו הסיבה".{{code}}
אימות ובדיקת רגרסיה לאחר תיקון:
נניח שגורם השורש הוא {{סיבה}} ואני מבצע את התיקון הבא: {{תיקון}}.1) האם התיקון הזה אכן מתקן את הסימפטום, האם יהיו לו תופעות לוואי כלשהן?2) כתוב מבחן רגרסיה שיתפוס את הבאג הזה בעתיד.
הנחיה חלשה / הנחיה חזקה
חלש: "הקוד לא עובד, למה?"
חזק: "צומת 20 / אקספרס. POST / orders מחזיר 500 כאשר פריטים הם מחרוזת ריקה בגוף; היה צריך להחזיר 400. עקבות מחסנית: TypeError: לא ניתן לקרוא מאפיינים של undefined (קורא '0') - מצורף המעקב המלא והמטפל המשויך. תן לי את 3 הסיבות הסבירות ביותר שמסבירות את הסימפטום הזה ואיך לבדוק כל אחד" [trace + קוד].
גרסה חזקה; זה נותן לסביבה, נקודת קצה, קלט טריגר, סוג שגיאה מדויק והתנהגות צפויה. המודל כבר לא יכול לעשות תחזיות, אלא ניתוח.
צעד
התרומה של AI
השליטה שלך
איסוף ראיות
אילו ראיות נדרשות, מזכיר
באמת אוסף ראיות
יצירת השערות
רשום סיבות אפשריות
נותן עדיפות בהקשר
בדיקת השערות
ממליצה על שיטת בדיקה
פועל ומתבונן באופן אישי
תיקון
תיקון ממליץ
האם זה פותר את שורש הבעיה? זה נכון.
רגרסיה
כותב מבחן
מוודא שהבדיקה נשברה
פתרון סיבת השורש, לא הסימפטום
רוב הזמן ה-AI יציע תיקון שמשתיק במהירות את הסימפטום: הוסף try/catch, שים סימון ריק, בלע את השגיאה. זה לפעמים נכון, לעתים קרובות מסוכן; כי הסיבה המקורית נשארת במקומה ומתפרצת שוב ממקום אחר. עם כל תיקון, שאלו את עצמכם: "האם זה פותר את הסיבה לשגיאה, או האם זה הופך אותה לבלתי נראית?" ברגע שאתה מוצא את סיבת השורש, התיקון הוא בדרך כלל קטן יותר, חזק יותר וקבוע.
זהירות: בליעה שקטה של חריגה (תפיסה ריקה) אינה פותרת את השגיאה; זה רק מסתיר ועושה אבחנה עתידית בלתי אפשרית. אם AI מציע "פתרון" כזה, אל תקבל אותו מבלי להטיל ספק בשורש הסיבה.
טעויות נפוצות
- שואל שאלות ללא הוכחות. משפטים מעורפלים דוחפים את הדגם להזיה; תן שגיאה מלאה, מעקב וקלט.
- ננעל על ההשערה הראשונה. ייתכן שההצעה הראשונה של ה-AI אינה הסבירה ביותר; התחל עם ההשערה הזולה ביותר הניתנת לשליטה.
- מתקן את הסימפטום ומפספס את הסיבה השורשית. השגיאה המושתקת חוזרת.
- סגירת התיקון מבלי לאמת אותו. ראה במצב דמוי ייצור שהשגיאה למעשה נעלמת.
- לא כותב מבחני רגרסיה. אם לא יתווספו בדיקות, אותה שגיאה תחזור בשקט בגרסאות מאוחרות יותר.
לסיכום
באיתור באגים, הכוח של AI עומד ביחס ישר לראיות שאתה נותן לו: ללא הודעת השגיאה המלאה, מעקב מחסנית, קלט הפעלה והתנהגות צפויה, המודל רק משער. זרימה ממושמעת - הבהרת סימפטומים, אסוף ראיות, הפקת השערות, בדיקה עם הבקרה הזולה ביותר, תקן את סיבת השורש, אימות והוספה של בדיקות רגרסיה - סוגרת את הבאג במהירות ובאופן קבוע. AI הוא מחולל השערות; אתה זה שמחליט שהבאג אכן נפתר.
משימת יישום
בחר באג אמיתי שנתקלת בו לאחרונה (או שחזר באג בדיקה). בצע את שלב "הרבייה המינימלית" תחילה; הסר את הקוד והקלט הקטנים ביותר שמפעילים את השגיאה. לאחר מכן קבל 3 סיבות אפשריות ושיטות בדיקה מ-AI עם התבנית "יצירת השערות מבוססות ראיות". בדקו את ההשערה הזולה ביותר בעצמכם, מצאו את סיבת השורש, תקנו אותה ולבסוף כתבו מבחן רגרסיה שיתפוס את הבאג הזה בעתיד ויוודא שהמבחן אכן נשבר.
רשימת בדיקה
- [ ] אני מצמצם את השגיאה לדגימה הניתנת לשחזור הקטן ביותר לפני העברה ל-AI.
- [ ] אני מוסיף להודעה את הודעת השגיאה המלאה, מעקב מחסנית, קלט והתנהגות צפויה.
- [ ] אני מתחיל עם הזול ביותר שניתן לשליטה, מבלי להיות נעול על השערה אחת.
- [ ] אני מוודא שפתרתי את סיבת השורש במקום לתקן את הסימפטום.
- [ ] אני רואה שהתיקון למעשה מתקן את הבאג.
- [ ] אני מוסיף מבחן רגרסיה עבור כל באג שנפתר.