בדיקה עשויה להיכשל מכל סיבה שהיא, ולפעמים פשוט מריצים אותה מחדש כדי שהיא תעבור שוב (בגלל תנודות, למשל בגלל בעיות בתשתית הבסיסית). אפשר להגדיר ל-Tradefed לבצע את הניסיון החוזר באופן אוטומטי.
המטרה העיקרית של הניסיון החוזר האוטומטי היא להימנע מהרצה מחדש של כל הבדיקות. המערכת מפעילה מחדש רק את הבדיקות שנכשלו, וכך חוסכת זמן ריצה רב.
Tradefed תומך גם בהרצת בדיקות כמה פעמים כדי לזהות חוסר עקביות באמצעות התכונה iterations. במקרה כזה, כל הבדיקות ירוצו מחדש, והבדיקה תיכשל אם אחת מהחזרות על הבדיקה תיכשל.
הפעלת ניסיון חוזר אוטומטי
הניסיון החוזר האוטומטי נשלט באמצעות האובייקט RetryDecision, שמספק שתי אפשרויות להפעלת התכונה: max-testcase-run-count
ו-retry-strategy
.
max-testcase-run-count
קובע את מספר הניסיונות החוזרים או החזרות (iterations) שיתבצעו. הוא מגדיר גבול עליון כדי למנוע ניסיונות חוזרים ללא הגבלה.
retry-strategy
קובע איך לנסות שוב. פרטים נוספים מופיעים בקטעים הבאים.
השבתת הניסיון האוטומטי החוזר
משתמשים באפשרות הבאה:
--retry-strategy NO_RETRY
ניסיונות חוזרים של משימות שנכשלו
כדי לנסות שוב בדיקות שנכשלו, אפשר להשתמש באפשרויות הבאות:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
המערכת תנסה שוב לבצע את הפעולה שנכשלה עד שהיא תעבור או עד שמספר הניסיונות החוזרים יגיעו למספר המקסימלי, מה שקרה קודם.
איטרציות
כדי להריץ מחדש בדיקות מספר פעמים, אפשר להשתמש באפשרויות הבאות:
--retry-strategy ITERATIONS --max-testcase-run-count X
איך נראות התוצאות?
כברירת מחדל, דיווח על תוצאות יקבל תוצאות מצטברות של כל הניסיונות.
לדוגמה: Fail
ו-Pass
עבור RETRY_ANY_FAILURE
יגרמו ל-Pass
מצטבר, כי הניסיון החוזר הצליח לפתור את התקלה.
דיווחים יכולים לקבל את התוצאות הלא מצטברות. כדי לעשות זאת, צריך להרחיב את ממשק ISupportGranularResults שמצהיר על תמיכה בתוצאות מפורטות (לא מצטברות).
פרטי ההטמעה
כדי להפעיל ניסיונות חוזרים אוטומטיים להרצה מחדש של כשלים ברמת תרחיש הבדיקה, מטמיעים את ITestFilterReceiver.
אם אי אפשר להטמיע את ITestFilterReceiver, אפשר להטמיע את IAutoRetriableTest כדי לשלוט באופן ידני באופן הפעלת ההרצה מחדש. InstalledInstrumentationsTest היא דוגמה להטמעה של הממשק הזה.