ניסיון חוזר אוטומטי בבדיקות

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