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

בדרך כלל חבילה כוללת כמה מודולים של בדיקות, והיא יכולה להגיע לגודל גדול למדי של מאגר בדיקות. לדוגמה, הכלי לבדיקת תאימות ל-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

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

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

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

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