Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

CTS 테스트 실행

Trade Federation은 Android 기기에서 테스트를 실행하기 위한 연속 테스트 프레임워크입니다. CTS(호환성 테스트 모음)를 실행하려면 Trade Federation 개요에서 Tradefed 테스트 프레임워크 설명을 먼저 읽어보세요.

테스트 계획을 실행하는 방법은 다음과 같습니다.

  1. Android 기기 설정에 따라 DUT(테스트 대상 기기)를 설정합니다.
  2. 출시된 CTS 빌드를 Linux 호스트 컴퓨터로 다운로드하고 호스트 위치에 빌드 압축을 풉니다.
  3. 기기를 하나 이상 연결합니다. DUT를 준비하려면 다음과 같이 하세요.
    • 버튼을 눌러 기기를 홈 화면에 설정합니다.
    • 다른 작업에서는 DUT를 사용하면 안 됩니다.
    • 센서 활동을 방지하기 위해 DUT를 고정된 위치에 둡니다.
    • 초점을 맞출 수 있는 대상에 기기 카메라를 향하게 합니다.
    • CTS가 실행 중일 때는 기기의 키를 누르면 안 됩니다. 키를 누르거나 DUT 화면을 터치하면 실행 중인 테스트에 지장을 주고 결국 테스트가 실패할 수 있습니다.
  4. CTS 패키지 압축을 푼 폴더에서 CTS 콘솔 cts-tradefed 스크립트를 실행합니다. 호스트의 명령줄 셸에서 다음을 실행합니다.
    ./android-cts/tools/cts-tradefed
  5. 모든 테스트 패키지가 포함된 기본 테스트 계획을 실행합니다.
    cts-tradefed > run cts
    • 테스트 실행 시간을 개선하기 위해 여러 기기에서 테스트를 샤딩할 수 있습니다. 샤딩하려면 호스트에 2개 이상의 기기를 연결해야 하지만 효율성을 위해 6개 이상의 기기를 연결하는 것이 좋습니다. 2개 이상의 기기를 샤딩하는 경우 다음을 진행합니다.
      • Android 9 이상에서는 다음 명령어 옵션을 사용합니다.
        --shard-count number_of_shards
      • Android 8.1 이하에서는 다음 명령어 옵션을 사용합니다.
        --shards number_of_shards
    • 테스트 모음을 모두 실행하지는 않으려면 다음 명령줄에서 원하는 CTS 계획만 실행하면 됩니다.
      run cts --plan test_plan_name

      테스트 계획 이름을 찾는 방법은 다음과 같습니다.

      • Android 7.0 이상에서 테스트 모듈 목록을 보려면 다음을 입력합니다.
        list modules
      • Android 6.0 이하에서 저장소의 테스트 계획 목록을 보려면 다음을 입력합니다.
        list plans
      • Android 6.0 이하에서 저장소의 테스트 패키지 목록을 보려면 다음을 입력합니다.
        list packages
    • CTS 버전에 따른 추가 명령어 옵션에 관한 자세한 내용은 아래 또는 Tradefed 콘솔의 '전체 도움말'에 나와 있는 콘솔 명령어 참조를 확인하세요.
  6. 모든 테스트 모듈이 완료되고 마지막 두 건의 재시도 세션에서 테스트 실패 횟수가 동일할 때까지 재시도 세션을 여러 번 실행합니다.
    • Android 9 이상에서는 다음을 사용합니다.
      run retry --retry session_number --shard-count number_of_shards
    • Android 7.0~8.1에서는 다음을 사용합니다.
      run cts --retry session_number --shards number_of_shards
    • CTS 버전에 따른 추가 재시도 명령어 옵션의 자세한 내용은 아래 CTS v2 콘솔 사용 섹션을 참조하세요.
    • CTS 재시도와 관련한 구현 세부정보를 알아보려면 Trade Federation 모음 재시도를 참조하세요.
  7. 콘솔에 보고된 테스트 진행 상황과 결과를 봅니다.

CTS v2 콘솔 사용

Android 7.0 이상에서는 CTS v2를 사용합니다.

계획 선택

사용 가능한 테스트 계획은 다음과 같습니다.

  • cts - 기존 CTS 설치에서 CTS를 실행합니다.
  • cts-camera - 기존 CTS 설치에서 CTS 카메라를 실행합니다.
  • cts-java - 기존 CTS 설치에서 핵심 자바 테스트를 실행합니다.
  • cts-pdk - PDK 퓨전 빌드의 유효성 검사에 유용한 테스트를 실행합니다.
  • everything - 호환성 모음의 공통 구성입니다.

사용 가능한 기타 구성은 다음과 같습니다.

  • basic-reporters - 기본 CTS 리포터의 구성입니다.
  • collect-tests-only - 기존 CTS 설치에서 CTS를 실행합니다.
  • common-compatibility-config - 호환성 모음의 공통 구성입니다.
  • cts-filtered-sample - 호환성 모음의 공통 구성입니다.
  • cts-known-failures - CTS 알려진 오류가 있는 구성입니다.
  • cts-preconditions - CTS 선조건 구성입니다.
  • host - 기존 기기에서 호스트 기반의 단일 테스트를 실행합니다.
  • instrument - 기존 기기에서 단일 Android 계측 테스트를 실행합니다.
  • native-benchmark - 기존 기기에서 네이티브 스트레스 테스트를 실행합니다.
  • native-stress - 기존 기기에서 네이티브 스트레스 테스트를 실행합니다.
  • recharge - 기기가 거의 방전될 때까지 기다리고 방전된 기기를 충전하는 가짜 테스트입니다.
  • testdef - 기존 기기에서 test_def.xml 파일에 포함된 테스트를 실행합니다.
  • util/wifi - 기기에 Wi-Fi를 구성하기 위한 유틸리티 구성입니다.
  • util/wipe - 기기에서 사용자 데이터를 완전히 삭제합니다.

위 모든 계획과 구성은 run cts 명령어로 실행할 수 있습니다.

CTS v2 콘솔 명령어 참조

표 1. 이 표에는 다양한 용도로 사용되는 CTS V2 콘솔 명령어가 요약되어 있습니다.

호스트 설명
help 흔히 사용되는 명령어 요약 표시
help all 사용 가능한 명령어의 전체 목록 표시
version 버전 표시
exit 정상적으로 CTS 콘솔 종료. 현재 실행 중인 모든 테스트가 완료되면 콘솔이 닫힙니다.
실행 설명
run cts

Android 10에서는 기본 CTS 계획과 CTS-Instant를 함께 실행합니다. 즉 전체 CTS를 호출합니다. Android 9 이하에서는 기본 CTS 계획만 실행합니다. 기기 유효성 검사에서는 선조건을 포함하여 이 포괄적 옵션을 사용합니다. 포함 항목에 관해서는 cts.xml을 참조하세요.

CTS 콘솔은 테스트가 진행되는 동안 다른 명령어를 수신할 수 있습니다.

연결된 기기가 없는 경우 CTS 데스크톱 컴퓨터 또는 호스트는 기기가 연결될 때까지 대기한 다음 테스트를 시작합니다. 두 개 이상의 기기가 연결되면 CTS 호스트는 자동으로 기기를 한 개 선택합니다.

run cts-instant

Android 9에서는 기본 CTS-Instant 계획을 실행합니다.

run cts --module-parameter INSTANT_APP

Android 10에서는 기본 CTS-Instant 계획을 실행합니다.

run cts --module-parameter INSTANT_APP --module/-m test_module_name

Android 10에서는 지정된 CTS-Instant 테스트 모듈을 실행합니다.

run retry

Android 9 이상에만 해당됩니다. 이전 세션에서 실패했거나 실행되지 않은 모든 테스트를 재시도합니다. 예를 들어 run retry --retry -s 또는 TF 샤딩을 사용한 run retry --retry --shard-count가 이에 해당합니다. Android 9 이상에서는 run cts --retry를 사용할 수 없습니다.

--device-token

Android 8.1 이하 버전에 해당됩니다. 지정된 기기에 지정된 토큰을 갖도록 명시합니다. 예를 들어 --device-token 1a2b3c4d:sim-card가 이에 해당합니다.

--enable-token-sharding

Android 10에만 해당됩니다. 관련 SIM 유형이 필요한 테스트에 자동으로 매칭합니다. SIM 관련 테스트 사례를 실행할 때 기기 일련번호를 제공할 필요가 없습니다. 지원되는 SIM: SIM_CARD, UICC_SIM_CARDSECURE_ELEMENT_SIM_CARD.

run cts-dev

기본 CTS 계획을 실행(즉, 전체 CTS 호출)하지만 새 테스트의 반복 개발의 실행 시간을 절약하기 위해 선조건을 건너뜁니다. 이 경우 --skip-preconditions 옵션을 사용할 때처럼, 미디어 파일 푸시 또는 Wi-Fi 연결 확인과 같은 기기 구성 확인 및 설정을 건너뛰게 됩니다. 또한 이 명령어는 기기 정보 수집 및 모든 시스템 상태 검사기도 건너뜁니다. 또한 단일 ABI에서만 테스트를 실행합니다. 기기 유효성 검사의 경우 이 최적화를 피하고 모든 선조건과 검사를 포함합니다. 제외 항목에 관해서는 cts-dev.xml을 참조하세요.

CTS 콘솔은 테스트가 진행되는 동안 다른 명령어를 수신할 수 있습니다.

연결된 기기가 없는 경우 CTS 데스크톱 컴퓨터 또는 호스트는 기기가 연결될 때까지 대기한 다음 테스트를 시작합니다. 두 개 이상의 기기가 연결되면 CTS 호스트는 자동으로 기기를 한 개 선택합니다.

run retry

Android 9에 해당됩니다. 이전 세션에서 실패했거나 실행되지 않은 모든 테스트를 재시도합니다. 예를 들어 run retry --retry session id -sdevice serial 또는 run retry --retry session id --shard-count TF 샤딩이 있습니다.

run cts --retry는 Android 9에서 사용할 수 없습니다.

--plan test_plan_name 지정된 테스트 계획을 실행합니다.
--module/-m test_module_name  [--module/-m test_module2...] 지정된 테스트 모듈을 실행합니다. 예를 들어 run cts --module CtsGestureTestCases는 동작 테스트 모듈을 실행합니다(run cts -m Gesture로 줄여 부르기도 함).
run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes는 특정 패키지, 클래스 또는 테스트를 실행합니다.
--subplan subplan_name 지정된 하위 계획을 실행합니다.
-- module/-m test_module_name -- test test_name  지정된 모듈과 테스트를 실행합니다. 예를 들어 run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes는 특정 패키지, 클래스 또는 테스트를 실행합니다.
--retry 이전 세션에서 실패했거나 실행되지 않은 모든 테스트를 재시도합니다. list results를 사용하여 세션 ID를 가져옵니다.
--retry-type not_executed 이전 세션에서 실행되지 않은 테스트만 재시도합니다. list results를 사용하여 세션 ID를 가져옵니다.
--shards number_of_shards Android 8.1 이하 버전에 해당됩니다. 여러 기기에서 병렬로 실행되도록 CTS 실행을 지정된 개수의 독립 청크로 샤딩합니다.
--shard-count number_of_shards Android 9에 해당됩니다. 여러 기기에서 병렬로 실행되도록 CTS 실행을 지정된 개수의 독립 청크로 샤딩합니다.
--serial/-s deviceID 특정 기기에서 CTS를 실행합니다.
--include-filter module_name  [--include-filter module2...] 지정된 모듈에서만 실행합니다.
--exclude-filter module_name  [--exclude-filter module2...] 지정된 모듈을 실행에서 제외합니다.
--log-level-display/-l log_level STDOUT에 표시된 최소 지정 로그 수준으로 실행합니다. 유효한 값: [VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT].
--abi abi_name 지정된 ABI, 32 또는 64에서 테스트가 실행되도록 강제합니다. 기본적으로 CTS는 기기가 지원하는 ABI마다 테스트를 한 번씩 실행합니다.
--logcat, --bugreport, 및 --screenshoot-on-failure 오류에 관한 더 많은 정보를 제공하고 진단에 도움이 될 수 있습니다.
--device-token --device-token 1a2b3c4d:sim-card와 같이 지정된 기기에 지정된 토큰을 갖도록 명시합니다.
--skip-device-info 기기에 관한 정보 수집을 건너뜁니다.
--skip-preconditions 새 테스트의 반복 개발의 실행 시간을 절약하기 위해 선조건을 건너뜁니다. 이 경우 미디어 파일 푸시 또는 Wi-Fi 연결 확인과 같은 기기 구성 확인 및 설정을 건너뛰게 됩니다.
목록 설명
list modules 저장소에서 사용 가능한 모든 테스트 모듈을 나열합니다.
list plans 또는 list configs 저장소에서 사용 가능한 모든 테스트 계획(구성)을 나열합니다.
list subplans 저장소에서 사용 가능한 모든 하위 계획을 나열합니다.
list invocations 현재 기기에서 실행 중인 'run' 명령어를 나열합니다.
list commands 대기열에서 현재 기기에 할당되기를 기다리는 모든 'run' 명령어를 나열합니다.
list results 현재 저장소에 저장된 CTS 결과를 나열합니다.
list devices 현재 연결된 기기와 기기 상태를 나열합니다.

'사용 가능한' 기기는 테스트 실행에 사용할 수 있는 작동 중이며 유휴 상태에 있는 기기를 말합니다.

'사용할 수 없는' 기기는 adb를 통해 표시되지만 adb 명령어에 응답하지 않아 테스트에 할당되지 않는 기기를 말합니다.

'할당된' 기기는 현재 테스트를 실행 중인 기기입니다.

버리기 설명
dump logs 실행 중인 모든 호출의 tradefed 로그를 버립니다.
추가 설명
add subplan --name/-n subplan_name
--result-type
[pass | fail | timeout | notExecuted]
[--session/-s session_id]
이전 세션에서 파생된 하위 계획을 생성합니다. 이 옵션은 테스트의 하위 집합을 실행하는 데 사용할 수 있는 하위 계획을 생성합니다.

유일한 필수 옵션은 --session입니다. 다른 옵션은 선택사항이지만 포함할 경우 값 앞에 와야 합니다. --result-type 옵션은 반복 가능합니다. 예를 들어 add subplan --session 0 --result-type passed --result-type failed는 유효합니다.

CTS v1 콘솔 사용

Android 6.0 이하인 경우 CTS v1 명령어 콘솔 참조를 확인하세요.