$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
ארכיטקטורת המערכת וסיכום האב-טיפוס:
מחקר זה מציג מערכת אב-טיפוס משופרת וגמישה, PreventativeTestPro, הממחישה גישה פרואקטיבית של הנדסת איכות המשתמשת בנתוני תצפית ומודלים לשפה גדולים (LLMs) לשיפור נוסף של פתרון בעיות תמיכה. המערכת שואפת להתמודד עם בעיות מודרניות באספקת תוכנה על ידי אוטומציה של זיהוי חריגות, ניתוח שורש הבעיה, וביצוע ופיתוח חכם של מקרי בדיקה לכיסוי לא מטופל באמצעות ניטור סינתטי, נתוני תצפית ואינטגרציה של GenAI. הארכיטקטורה מודולרית ומורכבת משלושה רכיבים מרכזיים: אוסף ומנתח נתוני תצפיתיות, שכבת אינטליגנציה מונעת GenAI, ומנוע עיבוד וביצוע בדיקות, כפי שמפורט באיור 1.

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

איור 2: ארכיטקטורת מערכת של המערכת המוצעת עם אוסף ומנתח נתוני תצפיתיות, שכבת אינטליגנציה מונחית GenAI, ומנוע עיבוד וביצוע בדיקות. איור זה ממחיש את הארכיטקטורה הפנימית של מערכת PreventativeTestPro, המחולקת לשלוש שכבות: שכבת אוסף התצפית מאגדת נתונים ממקורות שונים, כולל אירועי דפדפן, יומנים, קבצי HAR, יומני שרת, מדדים ומעקבים. שכבת הבינה המלאכותית הגנרטיבית משתמשת בנתונים אלו לביצוע ניתוח שורש הבעיה, תעדף אנומליות, ויצירת מקרים אוטומטיים (UI, API, מדריך) ותיעוד באמצעות מודלי שפה גדולה. מודול BHARAMARI גם מקים מיטות ניסוי חדשות. מנוע תזמור וביצוע בדיקות ממפה אי-התאמות למקרי בדיקה, מבצע בדיקות במקביל, מעריך תוצאות ומודיע לצוותי הנדסה, מערכות כרטיסים וללוחות מחוונים לפיקוח בזמן אמת ומעקב אחר פתרונות. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
מודול איסוף ומנתח נתוני תצפית משמש כמערכת חישה של הפלטפורמה, ואוסף באופן רציף נתונים מהיישום הנבחן בקנה מידה גדול, עם היבטים מרובים. במקרה של ניטור בצד הקדמי, סוכני ניטור סינתטיים מופעלים לניטור אירועים בצד הדפדפן, כגון מבני מודל אובייקט מסמכים (DOM), פעולות משתמש כגון קליקים, הוברים וקלטים, וקבצי HAR הלוכדים מידע על בקשות ותגובה ברשת וב-API. PreventativeTestPro מובנה גם ב-OBSERVER כדי להגדיל את יכולות הדפדפנים. ניטור בצד האחורי מתמקד בניתוח לוגים, שבו מבוקשים ומעובדים מידע על תצפית בצד השרת, הכולל יומני יישומים, הודעות שגיאות, הודעות מידע וניפוי שגיאות, יומני מעקב וחריגות, מדדי ביצועים כמו זמני תגובה, ומעקב באמצעות טכנולוגיות כמו OpenTelemetry או New Relic. המערכת תעבוד עם סוכנים סינתטיים המדמים תנועת משתמשים ואינטראקציה, ואוספי יומנים דוחסים נתונים נכנסים בזמן אמת. הנתונים שנאספו מנורמלים לפורמטים מובנים ומועברים ליחידות עיבוד אחרות לניתוח נוסף.
המהות של PreventativeTestPro היא שכבת אינטליגנציה מונחית GenAI המשתמשת במודלים גדולים (LLMs) כמו GPT לקריאה וניתוח נתוני תצפית והקשר ויצירת תגובות. המודול מבצע ניתוח סיבת שורש: תהליך של פירוש לוגי סיבת שורש ומעקבים כדי להסביר תקלות טכניות במונחים שניתן להבין, כמו NullPointerException על שורת קוד מסוימת והסיבה המשוערת לבעיה, כמו משתנה לא מאותחל. ביצירת מקרי בדיקה, המערכת משתמשת בבדיקות אוטומטיות שנוצרות על ידי המרת דפוסי חריגות או רצף אירועים לסקריפטי בדיקה ניתנים להרצה, למשל בדיקות Selenium או API, אך גם מייצרת נהלי בדיקה קריאים לאדם שצוות אבטחת האיכות יכול להריץ. בדיקות ה-API התפתחו באמצעות המרה של HAR ויומני עקבות לרצף של בקשות API עם ההצהרות הצפויות, וכל מקרי הבדיקה שנוצרו משתפרים עוד יותר עם מיטות בדיקה יעילות על ידי אינטגרציה עם BHRAMARI. שיפורים נוספים, שיפורים בכיסוי הבדיקות והזדמנויות לאינטגרציה של CI/CD מוצעים במערכת ההמלצה, בהתאם להתנהגות המערכת שנבדקה. מנוע הבינה המלאכותית משתמש בנתוני תצפית מובנית באמצעות הנדסת הנחיה והעשרת הקשר כדי להציג את הקשר היומן עם תבניות פרומפט שמעבירות שאילתות מובנות למודל השפה הגדולה, ולבסוף מייצר פלט בצורה פונקציונלית, כגון קטעי קוד, מפרטי מקרים ותיעוד בשפה טבעית.
מודול מנוע ה-Test Orchestration and Execution מטפל בעדיפות בדיקות, תזמון וביצוע, ומאפשר אימות אוטומטי בהתבסס על פרטי כיסוי שינויי קוד, תגיות ומיפוי אנומליה. המיפוי והבחירה של המבחן כוללים קישור אנומליות במפות או דפוסי אינסטרומנטציה למקרי בדיקה ידועים באמצעות מנוע כללי מיפוי, ולאחר מכן הרצת מקרי הבדיקה בהתאם למיפוי שנקבע. התכונות של ביצוע בדיקות מקביל מאפשרות להריץ סוגים רבים של בדיקות בו-זמנית, כגון בדיקות פונקציונליות, ביצועיות או אבטחה בסביבות שונות ותיאום השימוש בסלניום, JMeter ו-ZAP ככלים בצינורות האוטומציה. מימוש לולאת המשוב מוודא שתוצאות הביצוע מתועדות, ובמקרה של כישלון בדיקה, השינויים מועברים למערכות התמיכה, כולל Jira ו-Azure DevOps, כדי לעקוב ולפתור אותן.
השערה:
H1 (יעילות תפעולית): נטען כי שילוב נתוני תצפית ואינטליגנציה מונחית בינה מלאכותית ישפר את המדדים התפעוליים, במיוחד על ידי הפחתת זמן הפתרון הממוצע (H1a), זמן הממוצע לניתוח (H1b), הזמן הממוצע לזיהוי בעיות ייצור (H1c), והזמן הממוצע לפריסת תיקונים בייצור (H1d). שינויים אלה אמורים להקל על עמידה בדרישות הסכם רמת השירות (SLA) (H1e) על ידי האצת גילוי, ניתוח ופריסה תוך שמירה על זמן השבתה של המערכת למינימום.
H2 (יעילות בדיקות): גם מאמינים כי יעילות בדיקות התוכנה תשתפר עם כיסוי בדיקות מוגבר (H2a), הרצת מקרי בדיקה במקביל (H2b) ותעדוף בדיקות חכם (H2c). המלצות שנוצרו על ידי בינה מלאכותית (H2d) צפויות גם הן לסייע הן בבדיקות והן בתהליכי עבודה תפעוליים. זה יסייע לאתר באגים מהר יותר, להאיץ את לולאות המשוב ולתמוך בפרקטיקות אבטחת איכות שהן מונעות וארוכות טווח.
היקף וקהל:
אב-הטיפוס הזה מציג את עיצוב המערכת הכולל, את הרעיון המרכזי, וכיצד להגדיר ולהריץ את מסגרת PreventativeTestPro שלב אחר שלב. הוא גם מפרט איך להקים את מיטות הניסוי/קלטי הדגימה הנכונים ונותן טיפים איך לתקן בעיות. התוכן מיועד למהנדסי איכות תוכנה שכבר יודעים את יסודות Java ורוצים ללמוד כיצד להשתמש בבדיקות מונעות כדי להפוך את התוכנה לאמינה ויעילה יותר.
הגדרת סביבה:
קובץ משלים 1 מכיל תיאור שלב אחר שלב ותוכנית הנדרשות לתקשורת עם PreventativeTestPro. זה כולל הוראות להתקנת הסביבה הנדרשת, כיצד להפעיל ולהפסיק את שירותי הכלי, והסבר ברור על השימוש הבסיסי בכלי. לקבלת תיעוד מפורט יותר, יחד עם הוראות לשימוש בכלים מתקדמים, הוראות הגדרה ופרטים ארגוניים נוספים, עיינו במקורות הרשמיים ב-GitHub המוקדשים לפרויקט: דף הוויקי הספציפי במיקום https://github.com/sohambpatel/PreventativeTests/wiki וה-README הראשי ב-https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
קלטים לדוגמה:
קבצי הקלט לדוגמה נמצאים במאגר GitHub: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. המסגרת יכולה להריץ את מקרי הבדיקה והנתונים המוגדרים מראש של הקבצים הללו מיד. הם משמשים כקלטי ייחוס לבדיקת הגדרת הסביבה ולקבלת אותן תוצאות המתוארות בפרוטוקול זה.
פלטים לדוגמה:
מאגר GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) מכיל דגימות קונקרטיות של נתוני הפלט של מסגרת הבדיקה המונעת בפורמט גולמי. באמצעות קבצים אלו, המשתמשים יכולים לצפות ישירות בפריסה ובפרטים של הדוחות והמדדים שנוצרו, ולהראות את התוצאות שהכלי השיג במהלך פעולתו. מדריך זה רלוונטי להכרת צינור הנתונים ולאישור התנהגות המסגרת הצפויה בעת שחזור תהליך הניסוי.
אבטיפוס ביצוע:
סעיף זה מספק מדריך מפורט שלב אחר שלב כיצד להשתמש במסגרת PreventativeTestPro. כדי לסייע למשתמשים לשחזר את תהליך העבודה, כל שלב מתואר לפי הסדר. סעיף זה מציג את שלבי הביצוע בפורמט מובנה כדי להקל על שחזור תוצאות, הצבעה על נקודות ביקורת חשובות, ולהבטיח שמסגרת PreventativeTestPro תוכל לשמש באופן עקבי בסביבות ניסוי או תפעוליות שונות.
בשלב זה, ניתן להשתמש בממשק המשתמש PreventativeTestPro כדי לבחור את תהליך הבדיקות המונעות הטוב ביותר. איור 3 מציג חמש אפשרויות, שכל אחת מהן מייצגת שלב שונה בתהליך הבדיקה: הרצת בדיקות במקביל, יצירת חבילת הבדיקות מתוך ניטור פלט על ידי תעדף מקרי בדיקה קיימים, יצירת מקרי בדיקה ידניים, יצירת מקרי בדיקה אוטומטיים ומציאת שורש הבעיה. כאשר המשתמש בוחר, זרימת העבודה המיועדת מתחילה. לאחר מכן, ניתן להוסיף מצבים נוספים (כגון יצירת מקרי בדיקה מונעים על ידי בינה מלאכותית או ניתוח סיבת שורש) בשלבים מאוחרים יותר. הממשק המאורגן היטב הזה מספק דרך לבצע בדיקות מונעות שניתן לחזור עליהן ולפרק אותן לחלקים קטנים יותר.

איור 3: ממשק משתמש 1 של המערכת. איור זה מציג את ממשק המשתמש PreventativeTestPro, שמאפשר לבחור מתוך חמש דרכים שונות לבצע בדיקות מונעות: 1. בדיקות מונעות, ביצוע מקביל: התחל בדיקות, 2. בדיקות מונעות, סיום חבילת בדיקות המבוססות על ניטור אפליקציות סינתטיות, 3. בדיקות מונעות, יצירת מקרי בדיקה ידניים באמצעות GenAI, 4. בדיקות מונעות, יצירת מקרי בדיקה אוטומטיים באמצעות GenAI, 5. בדיקות מונעות, ניתוח שורש הבעיה באמצעות GenAI. ניתן לבחור רק אפשרות אחת בכל פעם. העיצוב המודולרי מקל על ביצוע בדיקות מונעות ומוסיף יצירת בדיקות ואבחון מבוססי בינה מלאכותית. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
איור 4 מציג את ממשק הביצוע המקביל של המסגרת. בשלב זה, המשתמש מזין את כתובת ה-URL של האפליקציה שהוא רוצה לבדוק ואת הנתיב האבסולוטי לקובץ התכונות שיש בו את הגדרות ההגדרה. לאחר שהקלטים מוגדרים, המשתמש יכול להתחיל להריץ בדיקות במקביל על ידי לחיצה על כפתור Start Test, שמנטר גם את האתר הנבדק ומייצר את יומני האבטחה, הביצועים, הקונסולה ו-JavaScript. ניתן לעצור את הביצוע המתמשך על ידי לחיצה על כפתור עצירת הבדיקה. כפתור קבלת ההמלצה מאפשר לקבל תובנות מבוססות בינה מלאכותית מתוך היומנים שהוקלטו. עיצוב זה מבטיח שמספר קטגוריות בדיקה (פונקציונליות, ביצועים ואבטחה) פועלות בו-זמנית, מה שמקל על איתור בעיות מהר יותר.

איור 4: ממשק משתמש 2 של המערכת. איור זה מציג את מצב הביצוע המקביל של מסגרת PreventativeTestPro. המשתמש מפרט את כתובת ה-URL של יישום היעד ואת הנתיב לקובץ תכונות המכיל פרטי קונפיגורציה. האפשרויות כוללות Start Testing (להרצת בדיקות פונקציונליות, אבטחה וביצועים במקביל ורישום היומן), Stop Testing (לעצירת ביצוע), ו-Get Recommendation (לקבלת תובנות מבוססות בינה מלאכותית מלוגים ומדדים). אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
איור 5 מציג את ממשק סיום הבדיקות המבוסס על ניטור במסגרת PreventativeTestPro. בשלב זה, המשתמש מגדיר את הנתיב לקובץ הפלט של המעקב, את שאילתת נתיב JSON לקבלת צמתים של שגיאות או חריגות, ואת מסלול מאגר הבדיקה לשמירת המקרים שנוצרו. לאחר שהקלטים מוגדרים, המשתמש יכול קודם לקבל את שמות המחלקה והמתוד שמלווים אליהם ואז למיין את מקרי הבדיקה מתוך משיכת הבדיקה בהתבסס על המחלקה והמתודה. שלב העדיפות הזה מראה כיצד להשתמש בנתוני ניטור כדי לדרג את מקרי הבדיקה בצורה יעילה.

איור 5: ממשק משתמש 3 של המערכת. תרשים זה מראה כיצד לתעדף חבילת בדיקות במסגרת PreventativeTestPro באמצעות פלטי ניטור סינתטי. המשתמש מקליד את הנתיב לקובץ הפלט של המעקב, את נתיב ה-JSON לקבלת חריגים/שגיאות, ואת הנתיב למאגר הבדיקה (לא מקוון). אפשרויות Get class/method name ו-Get Test Cases יכולות לשמש כדי להפוך אנומליות מיפוי למקרי בדיקה שניתן להריץ. זה מבטיח שבעיות בזמן ריצה ייכללו בתהליך הבדיקה. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
איור 6 מציג את ממשק יצירת מקרים ידניים של PreventativeTestPro. בשלב זה, המשתמש אומר לתוכנית היכן למצוא את קובץ ה-stack trace שמציג את האנומליה על ידי מתן הנתיב האבסולוטי לקובץ ה-stack trace והנתיב לקובץ מאפייני הקונפיגורציה. לאחר הגדרת הקלטים, ניתן להריץ את אפשרות יצירת מקרים מבחנים, שתהפוך את האנומליה למקרי בדיקה ידניים מובנים. זה מבטיח ששגיאות בזמן ריצה שקרו בעבר תמיד ייכללו בתהליך הבדיקה. המסגרת מקלה על יצירת מקרי בדיקה על ידי אוטומציה של התהליך. זה מפחית את העבודה הידנית, משפר את כיסוי הבדיקות והופך את הבדיקות לאמינות יותר, ומונע את אותה בעיה מלחזור. שלב זה הוא קשר חשוב מאוד בין מציאת בעיות לבין הבטחת איכות טובה לפני שזה קורה.

איור 6: ממשק משתמש 3 של המערכת. איור זה מציג את ממשק יצירת מקרי הבדיקה של PreventativeTestPro. היא הופכת מעקבי מחסנית אנומליה למקרי בדיקה ידניים ב-Behavior Driven Development (BDD) שניתן להשתמש בהם. המשתמש נותן את הנתיבים לקובץ ה-stack trace ולקובץ המאפיינים ואז לוחץ על "Generate Test Cases" כדי ליצור אוטומטית מקרים התואמים לכישלון שנמצא. זה מבטיח שבעיות בזמן ריצה תמיד יהפכו לבדיקות רגרסיה שניתן לחזור עליהן. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
איור 7 מציג את ממשק יצירת מקרי הבדיקה האוטומטי של PreventativeTestPro. בשלב זה, המשתמש נותן את הנתיב האבסולוטי לקובץ הפלט JSON התצפית ואת הנתיב לקובץ הקונפיגורציה של התכונה. כאשר לוחצים על כפתור יצירת מקרי בדיקה אוטומטיים, המערכת מעבדת את נתוני המעקב ויוצרת מקרי בדיקה שניתן להריץ כדי להראות את אותן בעיות שנראו.

איור 7: ממשק משתמש 4 של המערכת. איור זה מציג את ממשק יצירת מקרי הבדיקה האוטומטי של PreventativeTestPro, שמייצר בדיקות שניתן להריץ באמצעות נתוני תצפיתיות. המשתמש נותן את הנתיב לקובץ המאפיינים ואת קובץ הפלט JSON של התצפית. לאחר מכן, הם לוחצים על "יצירת מקרי בדיקה אוטומטיים" כדי ליצור סקריפטים שניתן להריץ (בפורמט Selenium ו-TestNG). אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.

איור 8: ממשק משתמש 5 של המערכת. איור זה מציג את ממשק המכשור האנומליה של PreventativeTestPro לניתוח סיבה שורשית (RCA). המשתמש נותן את הנתיב לקובץ המאפיינים ולקובץ trace של המחסנית, ואז בוחר RCA כדי להתחיל ניתוח מונחה בינה מלאכותית. שלב זה משנה אנומליות שזוהו לתובנות אבחנתיות מובנות, מה שמבטיח שניתן לתקן תקלות באופן שניתן לחזור עליו ובהתאם לבעיה. אנא לחצו כאן כדי לצפות בגרסה מוגדלת של הדמות הזו.
פתרון תקלות:
טבלה 1 מציגה את נקודות פתרון הבעיות החשובות ביותר שקשורות רק לקוד היישום. נקודות אלו הן דרך מהירה לזכור כיצד לתקן בעיות ברמת הקוד שמתעוררות בעת הרצת מסגרת PreventativeTestPro. תיעוד הפרויקט מספק מידע נוסף והוראות שלב אחר שלב לקוראים שמחפשים עזרה נוספת באיתור בעיות המשפיעות על הפונקציונליות הכוללת של האפליקציה. המשאב המלא ניתן לקבל מהקישור: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. הפניה נוספת זו מבטיחה שמשתמשים לא רק יתקנו בעיות קידוד אלא גם ילמדו כיצד לאבחן תקלות בפונקציות, מה שמאפשר להם להשתמש במסגרת בצורה יעילה יותר.
| התנהגות שגיאה | שורש הבעיה | איך לתקן? |
| הבקשה לא מתחילה | נתיב Java אינו מוגדר | במשתנה הסביבה, הגדר את JAVA_HOME |
| השרת נכשל בהפעלה | פורט 8080/9090 בשימוש (במיוחד בזמן שימוש ב-Docker) | עדכון מיפוי פורטים של Docker |
| תוכן GenAI הוא אפס | ייתכן שהאסימון פג תוקף | יצר את הטוקן ועדכן את config.properties לפני שאתה מספק אותו כקלט |
| מופע הדפדפן שנוצר על ידי המסגרת אינו מתחבר לרשת | או ששרת ZAP לא פועל או שהאישורים של ZAP שגויים | הפעל את ה-ZAP לפני הרצת האפליקציה, למקרה שהוא רץ והבעיה עדיין נמשכת, עדכן את פרטי ה-ZAP ב-config.properties לפני שאתה מספק את זה כקלט |
טבלה 1: שגיאות מערכת מוצעות נפוצות ותיקונים מהירים. טבלה זו מציגה את השגיאות הנפוצות הספציפיות ליישום, פתרון תקלות ותיקונים מהירים שניתן ליישם כדי לתקן את הבעיות.