테스트는 어떤 이유로든 실패할 수 있으며 경우에 따라서는 단순히 테스트를 재실행하는 것만으로도 다시 테스트에 합격할 수 있습니다. 이는 기본 인프라에서 발생한 문제 등에서 비롯된 결함 때문입니다. 자동으로 테스트 재시도를 수행하도록 Tradefed를 구성할 수 있습니다.
자동 재시도의 핵심은 모든 테스트가 재실행되지 않도록 하는 것입니다. 즉, 실패한 테스트만 실행하기 때문에 실행 시간이 크게 절약됩니다.
또한 Tradefed는 반복 기능을 통해 결함을 감지할 수 있도록 테스트를 여러 차례 실행할 수 있게 지원합니다. 이 경우에는 모든 테스트가 재실행되며, 반복 중 하나가 실패할 경우 테스트도 실패합니다.
자동 재시도 사용 설정
자동 재시도는 max-testcase-run-count 및 retry-strategy 기능을 사용 설정하는 두 가지 옵션을 제공하는 RetryDecision 객체를 통해 제어됩니다.
max-testcase-run-count는 시도하려는 재시도 또는 반복 회수를 유도하며, 재시도가 영구적으로 이루어지지 않도록 상한선을 설정합니다.
retry-strategy는 재시도 방식에 관한 결정을 유도합니다. 자세한 내용은 다음 섹션을 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Automatic test retry\n\nA test might fail for any reason, and sometimes simply re-running the test is\nenough to make it pass again (due to flakiness, such as from issues in the\nunderlying infrastructure). You can configure Tradefed to conduct the retry\nautomatically.\n\nThe core of auto-retry is to avoid re-running **all** of the tests; it re-runs\nonly the failed tests, resulting in large savings in execution time.\n\nTradefed also supports running tests multiple times in order to detect\nflakiness via the **iterations** feature. In this case, all tests will be\nre-run, and the test will fail if any of the iterations fail.\n\nEnable automatic retry\n----------------------\n\nThe automatic retry is controlled via the\n[RetryDecision object](https://android.googlesource.com/platform/tools/tradefederation/+/android16-release/src/com/android/tradefed/retry/BaseRetryDecision.java)\nwhich provides two options to enable the feature: `max-testcase-run-count`\nand `retry-strategy`.\n\n`max-testcase-run-count` drives the number of retries or iterations that will\nbe attempted. It sets an upper bound to avoid retrying forever.\n`retry-strategy` drives the decision of how to retry; see the following sections\nfor more details.\n\nDisable automatic retry\n-----------------------\n\nUse the following option: \n\n --retry-strategy NO_RETRY\n\nRetry failures\n--------------\n\nTo retry test failures, use the following options: \n\n --retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X\n\nThis will retry the failure until it passes or until the max number of retries\nis reached, whichever comes first.\n| **Note:** `max-testcase-run-count` counts the number of run attempts, meaning in case of a crash, it is possible for a test case to not have been executed `max-testcase-run-count` times.\n\nIterations\n----------\n\nTo re-run tests for a number of time, the following options can be used: \n\n --retry-strategy ITERATIONS --max-testcase-run-count X\n\nWhat do the results look like?\n------------------------------\n\nResult reporters by default will receive aggregated results of all attempts.\n\nFor example: a `Fail` and a `Pass` for `RETRY_ANY_FAILURE` will result in an\naggregated `Pass` since the retry managed to clear the failure.\n\nIt is possible for reporters to receive the non-aggregated results. To do so,\nthey need to extend the\n[ISupportGranularResults interface](https://android.googlesource.com/platform/tools/tradefederation/+/android16-release/invocation_interfaces/com/android/tradefed/result/retry/ISupportGranularResults.java)\nthat declares support for the granular (non-aggregated) results.\n\nImplementation details\n----------------------\n\nTo enable auto-retry to rerun failures at the test case level, implement\n[ITestFilterReceiver](/reference/tradefed/com/android/tradefed/testtype/ITestFilterReceiver).\n\nIf you can't implement ITestFilterReceiver, you can implement\n[IAutoRetriableTest](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/retry/IAutoRetriableTest.java)\nto manually control how rerun operates.\n[InstalledInstrumentationsTest](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/test_framework/com/android/tradefed/testtype/InstalledInstrumentationsTest.java)\nis an example implementation of that interface."]]