제품군 재시도 사용

제품군은 여러 테스트 모듈을 포함하는 경향이 있으며 상당히 큰 테스트 말뭉치 크기에 도달할 수 있습니다. 예를 들어 Android CTS(호환성 테스트 모음) 에는 수백 개의 모듈과 수십만 개의 테스트 사례가 포함되어 있습니다.

열악한 격리 또는 장치가 불량 상태가 되어 많은 양의 테스트가 실패할 수 있습니다.

제품군 재시도 기능은 이러한 경우를 해결하기 위한 것입니다. 취약성과 격리 불량을 배제하기 위해 전체 제품군 대신 실패만 재시도할 수 있습니다. 테스트가 계속 실패하면 재시도도 실패합니다. 그리고 실제 문제가 있다는 훨씬 더 강력한 신호를 받습니다.

제품군 재시도 구현

결과 재시도에는 이전 결과를 읽고 이전 호출을 다시 실행하는 작업이 포함됩니다.

재시도를 유도하는 기본 인터페이스는 ITestSuiteResultLoader 이며, 이를 통해 이전 결과와 이전 명령줄을 로드할 수 있습니다.

그런 다음 RetryRescheduler 는 이 정보를 사용하여 이전 명령을 다시 만들고 이전 실패 또는 실행되지 않은 테스트만 다시 실행하기 위해 일부 필터를 채웁니다.

제품군 재시도 예시: CTS

CTS의 재시도 구성은 다음과 같습니다.

<configuration description="Runs a retry of a previous CTS session.">
    <object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
    <test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />

    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level-display" value="WARN" />
    </logger>
</configuration>

이것은 이를 확장하는 대부분의 제품군에 적용됩니다(예: VTS ).

다음을 통해 호출됩니다.

cts-tradefed run retry --retry <session>

세션은 CTS 콘솔에 이전 결과를 나열하여 찾을 수 있습니다.

cts-tf > l r
Session  Pass  Fail  Modules Complete  Result Directory     Test Plan  Device serial(s)  Build ID   Product
0        2092  30    148 of 999        2018.10.29_14.12.57  cts        [serial]          P          Pixel

정확한 원래 명령이 다시 로드되고 추가 필터와 함께 다시 실행됩니다. 즉, 원래 명령에 일부 옵션이 포함된 경우 해당 옵션도 재시도의 일부가 됩니다.

예를 들어:

cts-tradefed run cts-dev -m CtsGestureTestCases

위의 재시도는 CtsGestureTestCases에만 관련된 명령을 재시도하기 때문에 항상 CtsGestureTestCases 로 제한됩니다.

CTS 스타일 제품군에 대한 재시도 구성

재시도가 작동하려면 이전 결과를 proto 형식으로 내보내야 합니다. 다음을 추가해야 합니다.

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

이것은 메인 커맨드의 XML 설정에 추가되어야 하며, 결과 폴더에 test-record.pb 파일이 생성될 것입니다.

그런 다음 CTS 재시도는 test-record.pb 및 기존 test_result.xml 의 조합에서 데이터를 로드하여 재시도 호출을 준비합니다.