CTS 최적화

Android 호환성 테스트 모음 (CTS)은 수백만 개의 개별 테스트를 제공합니다. 소프트웨어 개발 단계에서 CTS를 자주 실행해야 하지만 이러한 테스트를 실행하는 데 필요한 시간을 줄일 수 있습니다.

이 페이지에서는 테스트 실행 시간을 줄이는 데 사용할 수 있는 방법과 프로세스에 하드웨어 리소스를 최적화하는 방법을 설명합니다.

샤딩된 기기

주기를 줄이려면 여러 기기에서 CTS를 실행 (샤딩)해 보세요. 샤딩을 사용하는 방법을 알아보려면 CTS 테스트 실행을 검토하세요.

Android 테스트 스테이션

Android 테스트 스테이션 (ATS)을 사용하여 사용자 인터페이스를 채택하고 표준 Android 테스트 모음을 실행합니다. 이 도구는 Trade Federation (TF)의 웹 인터페이스로 작동하므로 이를 사용하면 최소한의 설정으로 테스트 기기 집합에서 CTS를 간편하게 실행하고 연속적인 테스트 실행을 위한 일정을 수립할 수 있습니다.

Android 테스트 스테이션은 단일 ATS 컨트롤러 호스트를 사용하여 여러 ATS 작업자 호스트에서 기기와 테스트를 관리할 수 있는 멀티 호스트 모드를 지원합니다.

에뮬레이터 연속 실행

개발 단계에서 CTS를 연속적으로 실행하려면 Android Virtual Device (AVD)를 하드웨어 대신 사용할 수 있습니다. 테스트 실패의 회귀를 조기에 식별할 수 있으므로 근본 원인을 분류하고 분석하는 데 필요한 시간을 크게 절약할 수 있습니다. 에뮬레이터의 여러 인스턴스를 샤딩에 사용할 수 있으며 Android 테스트 스테이션과 함께 연속적으로 실행되도록 예약할 수 있습니다.

drawElements 품질 프로그램 (dEQP)

drawElements 품질 프로그램 (dEQP)은 Android CTS에 포함되어 있습니다. 이 프로그램은 CtsDepqTestCases라고 하며 Android 그래픽의 테스트 적용 범위에 중점을 둡니다. 이 모듈은 Android CTS의 모든 테스트 사례 중 거의 80% 를 차지하며 총 실행 시간의 6% 를 차지합니다.

Android 그래픽 드라이버는 Android 펌웨어 (BSP)의 일부이며 개발 과정에서 크게 변경되지 않으므로 이 모듈을 전략적으로 실행할 수 있습니다. 예를 들어 소프트웨어 개발 중에 2주 (또는 그 미만)마다 CTS를 실행하는 경우, 펌웨어 업데이트 일정에 따라 여러 주기 동안 이 모듈을 제외할 수 있습니다.

한 가지 방법은 일련의 기기에서 CtsDeqpTestCases를 별도로 실행한 다음 CTS 보고서를 제출하는 것입니다. 예를 들어 두 개의 서로 다른 호스트에서

호스트 1:

cts-tf > run cts --max-log-size 100 --shard-count 6 -o -m CtsDeqpTestCases

호스트 2:

cts-tf > run cts --max-log-size 100 --shard-count 6 -o --exclude-filter CtsDeqpTestCases

미디어 테스트 사례

미디어 테스트 사례는 오디오, 동영상, 멀티미디어 드라이버와 같은 멀티미디어 서비스를 확인합니다. 이러한 멀티미디어 테스트 모듈은 CTS 실행 시간에 가장 큰 영향을 줍니다. 지연은 다음과 같은 경우에 발생할 수 있습니다.

  • 테스트 중에 미디어 파일을 다운로드하거나 미디어 파일을 반복적으로 재생합니다.
  • 실패한 테스트 사례를 다시 시도합니다.

Android CTS에는 다음 테스트 모듈이 포함되어 있습니다.

  • CtsMediaStressTestCases
  • CtsMediaPlayerTestCases
  • CtsMediaAudioTestCases
  • CtsVideoTestCases
  • CtsMediaDecoderTestCases
  • CtsMediaCodecTestCases
  • CtsMediaV2TestCases

일부 미디어 테스트를 로컬 또는 로컬 서버에서 실행하는 것이 좋습니다. 자세한 내용은 로컬에서 CTS 미디어 테스트 실행을 참고하세요.

멀티미디어 프레임워크와 그 드라이버 (디코더 및 인코더)는 Android 펌웨어 (BSP)의 일부입니다. 이 모듈을 전략적으로 실행하고 펌웨어 업데이트 일정에 따라 여러 주기 동안 이러한 모듈을 제외할 수 있습니다.