מבוא
במאמר זה, אסקור את היכולת להוסיף נתוני בקרת גרסאות Git לדוח אוטומציית הבדיקות שלנו. הכלים הטכנולוגיים המשמשים למימוש הפתרון הם:
שפת תכנות: Java
כלי בנייה: Maven
מנוע בדיקות: TestNG
תשתית דוחות: Allure
תלויות:
הבעיה
לפעמים בדיקות שעוברות הופכות ללא יציבות (flaky), זה יכול לקרות מסיבות רבות:
- גרסת המוצר השתנתה.
- גרסת האוטומציה השתנתה.
- שינויים הקשורים למערכת הנבדקת
- בעיות סנכרון בדיקות.
יש, כמובן, סיבות נוספות, ואנו זקוקים לדרך להכניס את כל המידע הרלוונטי למערכת הדיווח שלנו כדי לנפות שגיאות בסיבות אלו, וחלק חשוב מהפאזל הוא נתוני בקרת הגרסאות שלנו.
הפתרון – הוספת נתוני בקרת גרסאות לדוח Allure
סקירת מסגרת הדיווח Allure
ראשית, בואו נסקור את מסגרת Allure. הנה הדגמה של יכולות המסגרת: https://demo.qameta.io/allure/
מדוע בחרנו ב-Allure?
- חינמי וקוד פתוח.
- יכולת לצרף סוגי קבצים שונים (תמונות, קבצי נתונים וכו’) למקרי הבדיקה בהתאם לצרכינו.
- צירוף קישורים למקרי בדיקה (לדוגמה, מקרי בדיקה רלוונטיים ב-Jira).
- אינו דורש ניהול אובייקט הדוח – בניגוד למסגרות בדיקה אחרות.
- תוסף מובנה ל-Jenkins.
- משתמש בגישה מבוססת רפלקציה כדי לחלץ את הנתונים שהועברו לשלבי הבדיקה ולהציג אותם בדוח.
- אפשרות להגדיר רמות חומרה למקרי בדיקה ולסנן תוצאות על בסיס חומרה – זה מוסיף שכבה נוספת המסייעת לאבחן במהירות את תוצאות הבדיקה שלנו.
- יכולת מובנת לנתח את סוג הכשל – בין אם זו שגיאת זמן ריצה או כשל אמיתי שהתרחש כתוצאה מ-Assert.
התכונה שבה נשתמש במאמר זה כדי להוסיף את נתוני בקרת הגרסאות שלנו היא היכולת להוסיף מידע סביבתי לדוח.
מימוש הפתרון
ראשית, עלינו להוסיף את maven-git-commit-id-plugin
לקובץ pom.xml
שלנו. לאחר מכן, לאחר בניית Maven מוצלחת, נוצר קובץ מאפייני git תחת ספריית target/classes
. הקובץ מכיל את המאפיינים הבאים הזמינים לחילוץ:
git.branch, git.build.host, git.build.time, git.build.user.name, git.build.version, git.closest.tag.commit.count, git.closest.tag.name, git.commit.id, git.commit.id.abbrev, git.commit.id.describe, git.commit.id.describe-short, git.commit.message.full, git.commit.message.short, git.commit.time, git.commit.user.name, git.dirty, git.remote.origin.url, git.tags.
לאחר יצירת קובץ המאפיינים, עלינו ליישם מנגנון במסגרת הבדיקה שלנו שיחלץ את הנתונים ויזריק אותם לדוח. הכלי שעוזר לנו ליצור מנגנון זה הוא allure-environment-writer.
בדוגמת הקוד הבאה, יצרתי שיטת בדיקה שרצה לאחר השלמת כל החבילה. אנו יוצרים אובייקט מאפיינים שנטען מזרם קלט שהוא קובץ מאפייני ה-git שלנו, ואז אנו יוצרים מפה בלתי ניתנת לשינוי של שמות מאפיינים והנתונים מאובייקט המאפיינים.
@AfterSuite
public void WriteAllureEnvironmente() throws IOException {
String path = System.getProperty("user.dir") + "\\target\\classes\\git.properties";
Properties prop = new Properties();
InputStream input = new FileInputStream(path);
prop.load(input);
allureEnvironmentWriter(ImmutableMap.<String, String>builder()
.put("git.branch", prop.getProperty("git.branch"))
.put("git.build.host", prop.getProperty("git.build.host"))
.put("git.build.time", prop.getProperty("git.build.time"))
.put("git.commit.id", prop.getProperty("git.commit.id"))
.put("git.commit.message.short", prop.getProperty("git.commit.message.short"))
.put("git.commit.time", prop.getProperty("git.commit.time"))
.put("git.remote.origin.url", prop.getProperty("git.remote.origin.url"))
.build());
}
התוצאה של ההרצה בדוח שנוצר היא:
נתוני בקרת הגרסאות הרלוונטיים מוצגים תחת סעיף הסביבה. שימו לב שבעת יצירת המפה אנו מחליטים אילו מאפיינים אנו רוצים לחלץ.
לסיכום
במאמר זה, סקרנו את הבעיה שעמדנו בפניה כאשר נזקקנו לנפות שגיאות בבדיקות כושלות ולא ידענו את נתוני בקרת הגרסאות של קוד האוטומציה שלנו, ולאחר מכן יישמנו פתרון להוספת נתוני בקרת הגרסאות ישירות למסגרת הדיווח שלנו.
בדיקות מהנות!