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