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