יכול להיות שהבדיקה תיכשל מכל סיבה שהיא, ולפעמים פשוט להריץ אותה מחדש מספיק כדי שהיא תעבור שוב (בגלל חוסר יציבות, למשל מבעיות בתשתית הבסיסית). אפשר להגדיר את Tradefed כך שיבצע את הניסיון החוזר באופן אוטומטי.
העיקרון המרכזי של ניסיון חוזר אוטומטי הוא להימנע מהרצה חוזרת של כל הבדיקות. במקום זאת, המערכת מריצה מחדש רק את הבדיקות שנכשלו, וכך חוסכת זמן רב.
בנוסף, אפשר להריץ בדיקות כמה פעמים ב-Tradefed כדי לזהות חוסר יציבות באמצעות התכונה iterations. במקרה כזה, כל הבדיקות יופעלו מחדש, והבדיקה תיכשל אם אחת מהאיטרציות תיכשל.
הפעלת ניסיון חוזר אוטומטי
הניסיון החוזר האוטומטי נשלט באמצעות האובייקט RetryDecision, שמספק שתי אפשרויות להפעלת התכונה: max-testcase-run-count
ו-retry-strategy
.
max-testcase-run-count
קובע את מספר הניסיונות החוזרים או האיטרציות שיבוצעו. הוא מגדיר גבול עליון כדי למנוע ניסיון חוזר ללא הגבלה.
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 היא דוגמה להטמעה של הממשק הזה.