CTS 인증 도구 호스트 측 테스트 실행

이 페이지에는 CTS 인증 도구 (CTS-V) 호스트 측 Android 16 QPR2 및 Android 17 테스트를 설정하고 실행하는 방법이 설명되어 있습니다. 호스트 측 테스트에는 두 가지 유형이 있습니다. 멀티 기기 테스트(Android 17 이전에 도입됨)와 대화형 테스트 (Android 17에 새로 도입됨)입니다.

  • 멀티 디바이스 테스트는 완전 자동화된 테스트입니다.
  • 대화형 테스트는 반자동화된 테스트로, 테스트 대상 기기 (DUT)에서 일부 수동 단계를 실행해야 합니다.

새로운 대화형 테스트 외에도 수동 범위 정확도 및 통신 테스트가 호스트 측 멀티스크린 테스트로 변환되었으며 Wi-Fi 연결 테스트가 이제 필수입니다.

호스트 측 테스트 설정

다음 단계에 따라 호스트 측 테스트를 설정하세요 (멀티스크린 테스트에는 추가 설정이 필요함).

  1. 데스크톱 컴퓨터가 CTS의 운영체제 요구사항을 충족하는지 확인합니다.
  2. 데스크톱 소프트웨어 설치의 2단계와 5단계에 따라 adb, AAPT2, Python이 데스크톱에 올바르게 설치되어 있는지 확인합니다.
    • Python 버전은 3.11 이상이어야 합니다. Python 버전을 확인하려면 python3 --version을 실행합니다. 버전이 3.11보다 낮은 경우 최신 공식 Python 출시 버전을 설치합니다. 자세한 내용은 python.org 다운로드 섹션을 참고하세요.
    • 특정 테스트에서는 호스트에 Python venv 모듈이 있어야 합니다. Debian 및 Ubuntu 시스템에서는 이 모듈이 기본적으로 설치되지 않을 수 있습니다. Python 버전에 venv 모듈이 있는지 확인하려면 python3 -m venv venv를 실행합니다. 이 명령어가 실패하면 오류 메시지가 표시됩니다. 프롬프트에 따라 python3.x-venv 패키지를 설치합니다.

호스트 측 대화형 테스트만 실행하는 경우 호스트 측 테스트 실행으로 진행합니다. 하지만 멀티 디바이스 테스트를 실행하려면 호스트 측 멀티 디바이스 테스트 설정으로 진행하세요.

호스트 측 멀티 디바이스 테스트 설정

다음 단계에 따라 호스트 측 멀티스크린 테스트를 설정하세요.

  1. 데스크톱 컴퓨터가 CTS의 운영체제 요구사항을 충족하는지 확인합니다.
  2. 데스크톱 소프트웨어 설치의 2단계와 5단계에 따라 adb, AAPT2, Python이 데스크톱에 올바르게 설치되어 있는지 확인합니다.

    • Python 버전은 3.11 이상이어야 합니다. Python 버전을 확인하려면 python3 --version을 실행합니다. 버전이 3.11보다 낮은 경우 최신 공식 Python 출시 버전을 설치합니다. 자세한 내용은 python.org 다운로드 섹션을 참고하세요.
    • 특정 테스트에서는 호스트에 Python venv 모듈이 있어야 합니다. Debian 및 Ubuntu 시스템에서는 이 모듈이 기본적으로 설치되지 않을 수 있습니다. Python 버전에 venv 모듈이 있는지 확인하려면 python3 -m venv venv를 실행합니다. 이 명령어가 실패하면 오류 메시지가 표시됩니다. 프롬프트에 따라 python3.x-venv 패키지를 설치합니다.
  3. 각각 CTS-V가 설정된 일치하는 DUT 두 개를 준비합니다.

    • DUT 설정에 관한 자세한 내용은 DUT 설정을 참고하세요.
    • CTS-V 설정에 관한 안내는 설정을 참고하세요.
  4. 테스트 유형의 설정 섹션으로 이동합니다.

테스트가 이 목록에 없으면 표준 2기기 테스트 설정으로 진행하세요.

NFC 테스트 설정

NFC 테스트에서는 하나의 DUT와 하나의 PN532 NFC 칩을 사용합니다.

NFC 테스트를 설정하려면 다음 단계를 따르세요.

  1. PN532 NFC 칩을 구매합니다. All-In-One PN532가 권장됩니다.
  2. DUT에서 설정 앱으로 이동합니다.
  3. NFC를 사용 설정합니다.
  4. NFC 칩을 배치합니다.

    • 휴대전화의 경우 그림 1과 같이 DUT의 NFC 리더를 배치합니다.

      NFC 칩 배치

      그림 1. NFC 칩 배치

    • 다른 기기 유형의 경우 칩을 기기의 NFC 안테나 옆에 배치합니다.

  5. USB 케이블을 사용하여 PN532 NFC 칩을 테스트 워크스테이션에 연결합니다.

Wi-Fi AP 연결 테스트 설정

Wi-Fi 액세스 포인트 (AP) 연결 테스트 (CtsWifiConnectionTests)는 DUT와 AP 간의 연결을 테스트합니다. 다음 두 가지 방법으로 이러한 테스트를 설정할 수 있습니다.

  • 옵션 1: CTS-V용으로 설정한 기존 Wi-Fi 네트워크를 사용합니다.
  • 옵션 2: 프로그래밍 가능한 액세스 포인트 (AP)를 설정합니다.

Android 17에서는 옵션 2를 적극 권장하지만 필수는 아닙니다. 다음 두 섹션에서는 각 옵션을 설명합니다.

옵션 1: CTS-V용으로 설정한 기존 Wi-Fi 네트워크 사용

옵션 1에는 Wi-Fi 네트워크 범위 내에 Android DUT가 하나 필요합니다. DUT가 차폐 상자에 있고 Wi-Fi 네트워크에 연결할 수 없는 경우 차폐 상자에서 제거합니다.

옵션 2: 프로그래밍 가능한 AP 설정

Wi-Fi 연결 테스트를 위해 프로그래밍 가능한 AP를 설정하려면 다음 단계를 따르세요.

  1. Banana Pi R3 AP를 구매하고 설정합니다. Banana Pi R3 AP 구매 및 설정에 관한 자세한 내용은 Banana Pi BPI-R3 AP 설정을 참고하세요.

  2. 선택사항: 차폐 상자가 없는 경우 JTP-SR101 차폐 상자를 사용하는 것이 좋습니다. 다음 정보를 사용하여 이 상자를 구매하세요.

    Dong Guan Zheng Sheng Electronics Technology Co., LTD
    Bohui Industrial Park, Panlong Road, Liaobu Town, Dongguan City, Guangdong Province, China
    담당자: Forest Pan
    이메일: forest.pan@jtpmak.cn
    전화번호 (중국): +86 18676993556

  3. DUT와 AP를 호스트에 연결하고 RF 차폐 상자에 넣습니다. DUT와 AP는 10cm 이상 떨어져 있어야 합니다. 그림 2는 이 구성을 보여줍니다.

    실드 상자에 있는 DUT 및 AP

    그림 2. 실드 상자에 있는 DUT 및 AP

  4. SSH를 사용하여 호스트에서 AP에 액세스할 수 있는지 확인합니다.

범위 정확도 테스트 설정

범위 정확도 테스트를 설정하려면 다음 단계를 따르세요.

  1. 일치하는 Android DUT 두 대를 1미터 간격으로, 같은 높이에, 직접 시야가 확보되도록, 각 기기의 뒷면이 서로 마주보도록 배치합니다. 그림 3은 이 방향을 보여줍니다.

    기기 방향

    그림 3. 기기 방향입니다.

  2. USB 케이블을 통해 두 기기를 데스크톱 컴퓨터에 연결합니다.

표준 2기기 테스트 설정

기본 2대 기기 설정의 경우:

  1. 일치하는 Android DUT 두 개를 약 20cm 떨어뜨려 놓습니다.
  2. 적극 권장: 두 기기를 모두 차폐 상자에 넣습니다. 차폐 상자는 테스트 안정성을 개선하고 테스트 실패를 더 쉽게 디버그할 수 있도록 합니다.

  3. 통신 테스트의 경우 각 DUT에 SIM 카드와 모바일 신호가 있어야 합니다. DUT가 차폐 상자에 있는 경우 셀룰러 신호가 상자에 결합되어야 합니다. 그렇지 않으면 기기를 차폐 상자에서 꺼냅니다.

  4. 선택사항: Wi-Fi 디버깅을 위해 OTA 스니퍼를 설정합니다.

CDM 테스트 설정

test_permissions_sync() 테스트 사례는 테스트가 실행되는 기기의 빌드 유형에 따라 동작이 다릅니다. OEM이 디버깅 가능 (userdebug 또는 eng) 빌드와 디버깅 불가능 (user) 빌드 모두를 테스트하고 두 빌드 모두 테스트를 통과하는 것이 중요합니다.

GRT 면제

권한 동기화 API 구현에 관한 CDD 조항에서는 보안 채널을 통해 기기 간에 데이터를 성공적으로 전송할 수 있어야 한다고만 요구합니다. 보안 채널 구현은 CDD 규정 준수 요구사항이 아니므로 디버그할 수 없는 (사용자) 빌드에서 이 테스트를 건너뛸 수 있지만 CDM 권한 동기화 기능 지원을 선택 해제하려는 경우에만 가능합니다.

테스트는 디버그 가능한 빌드에서 예외 없이 통과해야 합니다.

디버깅할 수 없는 빌드에서 테스트하기 위한 기본 요건

면제 대상이 아닌 경우 다음 기본 요건을 충족하는지 확인하세요.

보안 채널은 AVF (AttestationVerificationFramework)를 사용하여 하드웨어의 신뢰성을 확인합니다. 양쪽에서 생성된 증명에는 시스템에서 무단 변경이 없었음을 확인하기 위한 자체에 관한 여러 정보가 포함됩니다. AVF는 확인 프로세스 중에 다음 상태를 확인합니다.

  • 기기가 인터넷에 액세스할 수 있음
  • 기기에서 자체 검사 부팅을 사용하고 빌드는 dev-key가 아닌 release-key로 서명해야 합니다.
  • 기기가 부트로더로 잠겨 있습니다. 자세한 내용은 부트로더 잠금을 참고하세요.
  • OS, 키 부팅, 키 공급업체 패치 수준이 12개월 이내입니다. 1년이 지난 빌드는 사용하지 마세요.
  • 기기 증명은 공급업체 승인 루트 인증서 중 하나로 지원됩니다. vendor_required_attestation_certificates.xml 리소스 오버레이에서 신뢰할 수 있는 루트 인증서를 지정합니다.

호스트 측 테스트 실행

NFC 테스트와 같은 일부 멀티 디바이스 테스트에는 추가 설정이 필요합니다. 추가 설정이 필요한 테스트의 경우 각 테스트가 별도로 실행됩니다. 추가 설정이 필요하지 않은 테스트의 경우 그룹으로 테스트를 실행할 수 있습니다.

  1. 테스트 워크스테이션에서 CTS-V zip 패키지가 압축 해제된 디렉터리에서 cts-v-host 콘솔을 실행합니다.

    ./android-cts-verifier/android-cts-v-host/tools/cts-v-host-tradefed
    
  2. DUT의 CTS-V 앱에서 Host-side Tests를 클릭합니다. 그림 4는 CTS-V 앱의 호스트 측 테스트를 보여줍니다.

    CTS-V 앱의 호스트 측 테스트

    그림 4. CTS-V 앱의 호스트 측 테스트

    테스트 호스트 측 멀티스크린 테스트 모듈 목록이 표시됩니다.

  3. CTS-V 호스트 콘솔에서 다음 명령어를 사용하여 표준 2개 기기 설정을 사용하는 멀티 기기 테스트를 실행합니다.

    run cts-v-host-multidevice-default
    

    결과는 DUT의 CTS-V 앱에 있는 각 테스트 모듈 아래에 표시됩니다. 녹색으로 표시된 테스트는 통과한 테스트이고 빨간색으로 표시된 테스트는 실패한 테스트입니다.

    그림 5는 CtsCompanionDeviceManager 테스트의 결과 예를 보여줍니다.

    CTS-V 앱의 호스트 측 멀티 디바이스 테스트 결과

    그림 5. CTS-V 앱의 호스트 측 멀티 디바이스 테스트 결과

  4. CTS-V 호스트 콘솔에서 다음 명령어를 사용하여 대화형 테스트를 실행합니다.

    run cts-v-host-interactive
    

    결과는 DUT의 CTS-V 앱에 있는 각 테스트 모듈 아래에 표시됩니다. 녹색으로 표시된 테스트는 통과한 테스트이고 빨간색으로 표시된 테스트는 실패한 테스트입니다.

  5. 추가 설정이 필요한 각 테스트에 대해 다음 명령어를 사용하여 테스트를 별도로 실행합니다.

    run cts-v-host -m test_module_name
    

    예를 들어 NFC 테스트를 실행하려면 다음 명령어를 사용하세요.

    run cts-v-host -m CtsNfcHceMultiDeviceTestCases
    

    결과는 DUT의 CTS-V 앱에 있는 각 테스트 모듈 아래에 표시됩니다. 녹색으로 표시된 테스트는 통과한 테스트이고 빨간색으로 표시된 테스트는 실패한 테스트입니다.

Wi-Fi AP 연결 테스트 실행

다음 두 가지 방법으로 Wi-Fi AP 연결 테스트를 실행할 수 있습니다.

  • 옵션 1: CTS-V용으로 설정한 기존 Wi-Fi 네트워크를 사용합니다.
  • 옵션 2: 프로그래밍 가능한 AP 설정

옵션 1: CTS-V용으로 설정한 기존 Wi-Fi 네트워크 사용

기존 Wi-Fi 네트워크에서 Wi-Fi AP 연결 테스트를 실행하려면 다음을 실행하세요.

  1. 테스트베드 구성 파일 (WifiConnectionTestbed.yaml)을 수정합니다. 이 파일은 CTS-Verifier가 압축 해제된 디렉터리에 있습니다. 예를 들면 다음과 같습니다.

    ./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml
    
  2. wifi_ssidwifi_password 필드의 값을 Wi-Fi 네트워크의 SSID와 비밀번호로 변경합니다. 다음 예에서는 이러한 설정의 위치를 보여줍니다.

    TestBeds:
    - Name: WifiConnectionTestbed
    Controllers:
      AndroidDevice: '*'
    TestParams:
      use_programmable_ap: False
      wifi_ssid: WIFI-SSID
      wifi_password: WIFI-PASSWORD
    
  3. CTS-V 호스트 콘솔에서 다음 명령어를 실행합니다.

    run cts-v-host -m CtsWifiConnectionTests
    

옵션 2: 프로그래밍 가능한 AP로 실행

프로그래밍 가능한 AP에서 Wi-Fi AP 연결 테스트를 실행하려면 다음을 실행하세요.

  1. 테스트베드 구성 파일 (WifiConnectionTestbed.yaml)을 수정합니다. 이 파일은 CTS-Verifier가 압축 해제된 디렉터리에 있습니다. 예를 들면 다음과 같습니다.

    ./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml
    
  2. 로컬 SSH 설정에 따라 hostname 값을 AP의 IP 주소로 변경합니다. IP 주소를 확인하려면 AP의 IP 주소 찾기를 참고하세요. 다음 예시에서는 hostname 설정의 위치를 보여줍니다.

    TestBeds:
    - Name: WifiConnectionTestbed
      Controllers:
        AndroidDevice: '*'
        # Specify settings for the AP.
        OpenWrtDevice:
        - hostname: AP-IP
          skip_init_reboot: True
      TestParams:
        use_programmable_ap: True
    
  3. CTS-V 호스트 콘솔에서 다음 명령어를 실행합니다.

    run cts-v-host -m CtsWifiConnectionTests
    

USB 호스트 측 테스트 실행

Android 17에는 Wi-Fi를 통해 adb를 실행해야 하는 USB CTS-V 호스트 측 테스트가 포함되어 있습니다.

일부 USB 테스트에서는 일반 CTS-V 앱이 액세스할 수 없는 권한이 있는 SystemAPI에 액세스하기 위해 CTS-V 호스트를 사용해야 합니다. 이러한 테스트는 연결되지 않으며 Wi-Fi를 통해 adb를 사용해야 합니다.

DUT가 UsbPort.java에서 포트 파트너 BC 1.2 유형 또는 USB 전원 프로필 보고를 지원하는 경우 다음 타입-C 액세서리가 필요합니다.

  • USB 타입-C 전원 공급 (PD) 충전기
  • USB 배터리 충전 1.2 (BC 1.2) 표준 다운스트림 포트 (SDP) 이러한 포트는 DUT에 500mA 또는 900mA를 제공하는 것으로 제한되며 일반적으로 외부 허브의 USB 포트에서 찾을 수 있습니다.
  • USB BC 1.2 충전 다운스트림 포트 (CDP) 이러한 포트는 DUT 및 데이터에 1.5A의 전류를 제공할 수 있습니다. 노트북이나 컴퓨터의 C형 포트는 CDP일 가능성이 높습니다.
  • USB BC 1.2 전용 충전 포트 (DCP) 이러한 포트는 데이터 없이 DUT에 1.5A의 전류를 제공할 수 있습니다. 이 목록에 있는 USB 타입-C PD 충전기는 DCP일 가능성이 높습니다.
  1. Wi-Fi를 통해 adb를 사용하여 DUT를 연결합니다. 설정 세부정보는 Wi-Fi를 통해 기기에 연결을 참고하세요.

  2. 모든 USB 연결에서 기기를 물리적으로 분리합니다. 테스트 명령어가 실행될 때 기기가 USB 호스트나 액세서리에 연결되어 있으면 테스트가 실패합니다.

  3. 다음 테스트 명령어를 실행합니다.

    run cts-v-host -m CtsUsbTypecTestCases
    

테스트가 끝나면 다음 그림과 같이 CTS-V 앱의 호스트 측 테스트에 결과가 표시됩니다.

CTS-V 앱의 호스트 측 USB 테스트

그림 6. CTS-V 앱의 호스트 측 USB 테스트

호스트 측 USB CTS-V 앱의 CtsUsbTypecTestCases 모음

그림 7. 호스트 측 USB CTS-V 앱의 CtsUsbTypecTestCases 모음

멀티 디바이스 테스트 문제 해결

이 섹션에서는 일반적인 문제를 해결하는 방법을 설명합니다.

CtsTelecomTest 중에 전화번호를 가져오지 못함

Failed to get phone number for <serial> 오류 메시지가 표시되면 다음 단계를 따르세요.

  1. 각 DUT에 SIM 카드가 설치되어 있는지 확인합니다.

  2. 오류가 지속되면 SIM 카드에서 자동 번호 검색을 지원하지 않을 수 있습니다. 이 경우 명령어에서 전화번호를 명시적으로 제공해야 합니다.

    예를 들어 DUT 1 (일련번호 17011FDEE0002N, 전화번호 555-0000)과 DUT 2 (일련번호 R3CN90YNAR, 전화번호 555-1111)의 경우 run cts-v-host 명령어에 다음 인수를 추가합니다.

    --module-arg CtsTelecomTest:dut_serial:17011FDEE0002N \
    --module-arg CtsTelecomTest:dut_phone_number:555-0000 \
    --module-arg CtsTelecomTest:ref_phone_number:555-1111
    

CtsMultiDeviceGenericRangingAccuracyTests 중에 서버에서 응답이 없음

다음 오류 메시지가 표시되면 특정 기기에서 OEM별 백그라운드 프로세스 관리로 인해 테스트 앱이 정지되거나 종료될 수 있습니다.

mobly.snippet.errors.ProtocolError: <AndroidDevice|Initiator> No response from server. Check the device logcat for crashes.

이 문제를 해결하려면 백그라운드 제한을 사용 중지하거나 다음 패키지를 허용 목록에 추가하세요.

패키지 표시 이름
com.google.snippet.uwb CtsUwbSnippetApp
com.google.snippet.ranging CtsRangingSnippetApp
com.google.snippet.bluetooth CtsBluetoothMultiDeviceSnippetApp
com.google.android.mobly.snippet.bundled androidx.multidex.MultDexApplication

NFC 테스트 중 GetFirmwareVersion의 응답 없음 문제 수정

멀티 디바이스 테스트를 실행하는 동안 verify_firmware_version RuntimeError: No response for GetFirmwareVersion 메시지가 표시되면 테스트에서 PN532 NFC 보드에 액세스할 수 없습니다.

이 문제를 해결하려면 호스트에서 PN532 NFC 보드가 사용하는 직렬 경로(예: dev/ttyUSB1)를 식별한 다음 콘솔에서 --module-arg 인수를 사용하여 수동으로 지정하세요.

run cts-v-host -m CtsNfcHceMultiDeviceTestCases --module-arg CtsNfcHceMultiDeviceTestCases:pn532_serial_path:/dev/ttyUSB1

NFC 테스트 중 거래 실패 오류 메시지 수정

모든 NFC 테스트 사례에 대해 Transaction failed, check device logs for more information. 메시지가 표시되면 DUT의 NFC 칩이 PN532를 감지할 수 없기 때문일 수 있습니다.

호스트에 연결된 기기가 여러 대이고 일부 기기에는 PN532가 상단에 배치되어 있지 않은 경우 잘못된 DUT가 선택되었을 수 있습니다. 자세한 내용은 NFC 테스트 설정을 참고하세요.

이 문제를 해결하려면 다음 중 한 가지를 따르세요.

  • -s 플래그를 사용하여 호스트 측 테스트 명령어에서 올바른 DUT의 시리얼을 설정합니다.

  • 호스트에서 DUT가 아닌 모든 기기를 연결 해제합니다.

CDM 테스트 사례 test_permissions_sync가 무시됨

디버깅할 수 없는 기기에서 테스트를 실행하는 경우 예외에 해당하는지 확인하세요. 그렇지 않은 경우 두 기기가 모두 기본 요건을 충족하는지 확인합니다.