שימוש חוזר בחבילה

חבילה כוללת בדרך כלל כמה מודולים לבדיקה והיא יכולה להגיע לגודל גדול למדי של קורפוס בדיקה. לדוגמה, חבילת בדיקת התאימות ל-Android (CTS) כוללת מאות מודולים ומאות אלפי מקרי בדיקה.

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

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

הטמעת ניסיון חוזר של חבילת בדיקות

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

הממשק הראשי שמפעיל את הניסיון החוזר הוא ITestSuiteResultLoader, שמאפשר לטעון תוצאה קודמת ושורת הפקודה הקודמת.

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

דוגמה לניסיון חוזר של חבילה: CTS

התצורה של ניסיון חוזר ב-CTS היא:

<configuration description="Runs a retry of a previous CTS session.">
    <object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
    <test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />

    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level-display" value="WARN" />
    </logger>
</configuration>

הכלל הזה רלוונטי לרוב החבילות שמרחיבות אותו, למשל VTS.

הוא יופעל באמצעות:

cts-tradefed run retry --retry <session>

כדי למצוא את הסשן, עליכם לרשום את התוצאות הקודמות במסוף CTS:

cts-tf > l r
Session  Pass  Fail  Modules Complete  Result Directory     Test Plan  Device serial(s)  Build ID   Product
0        2092  30    148 of 999        2018.10.29_14.12.57  cts        [serial]          P          Pixel

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

לדוגמה:

cts-tradefed run cts-dev -m CtsGestureTestCases

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

הגדרת ניסיון חוזר לחבילה בסגנון CTS

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

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

צריך להוסיף את זה להגדרת ה-XML של הפקודה הראשית, וכתוצאה מכך נוצר קובץ test-record.pb בתיקיית התוצאה.

לאחר מכן, הניסיון החוזר של CTS טוען נתונים משילוב של test-record.pb ושל test_result.xml הקיים כדי להכין את ההפעלה החוזרת.