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

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

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

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

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

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

הממשק הראשי שמפעיל את הניסיון החוזר הוא 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

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

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

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

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