CTS 기기 상호작용 도우미 모듈

Android 11 이상에서는 호환성 테스트 모음(CTS) 기기 상호작용 도우미 모듈을 사용하여 특정 CTS 테스트가 특정 기기의 사용자 인터페이스(UI)와 상호작용하는 방식을 맞춤설정할 수 있습니다. 즉, Android CDD(호환성 정의 문서) 또는 API 문서에서 다루지 않는 UI 요소의 교체와 같은 작업을 수행하면서도 CTS 테스트에 통과할 수 있습니다.

제품 개발 중에 Android UI를 맞춤설정하고 CTS를 통과하려는 OEM은 도우미 모듈을 구현할 수 있습니다. 기본 Android 구현을 사용하는 경우에는 추가 작업이 필요하지 않습니다.

도우미 모듈 구현

UI 맞춤설정 요구사항

CDD 모듈 또는 Mainline 모듈에서 UI 요구사항을 확인합니다. 원하는 UI가 CDD 또는 Mainline 모듈의 범위에 속하면 UI를 맞춤설정할 수 없습니다.

원하는 UI와 상호작용하는 CTS 테스트에서 도우미 프레임워크를 사용하지 않는 경우 UI를 맞춤설정할 수 없습니다. UI를 변경할 수 있으려면 먼저 테스트 소유자와 협의하여 테스트 모듈을 변환합니다.

그 외의 경우에는 UI를 맞춤설정할 수 있습니다.

구현 워크플로

  1. 특정 제품의 요구에 따라 UI를 맞춤설정합니다.
  2. 기존 AOSP 도우미 모듈을 UI와 상호작용해야 하는 CTS 테스트 모듈의 서브클래스로 지정합니다. 맞춤설정된 UI에 필요한 상호작용을 적절하게 교체합니다. 교체는 변경 유형에 따라 다릅니다.
    • OEM 서브클래스는 OEM 패키지(예: com.[oem].cts.helpers)에 있습니다.
    • 각 OEM 서브클래스의 이름은 Default라는 접두어를 가진 AOSP 구현과 구별하기 위해 공통 접두어를 사용합니다.
  3. 다음 테스트 실행기 규칙에 따라 도우미를 APK에 빌드합니다.
    • Android.bp는 포함된 패키지와 같은 이름을 가진 android_test_helper_app을 선언해야 합니다.
    • APK의 AndroidManifest.xml은 이전 글머리 기호에서 선택한 클래스 접두어의 값을 사용하여 interaction-helpers-prefix라는 이름의 메타데이터 속성을 선언해야 합니다.
    • 앱은 cts-helpers-core, cts-helpers-interfaces, com.android.cts.helpers.aosp에 종속됩니다. OEM 도우미가 모든 관련 인터페이스를 완전히 구현하면 com.android.cts.helpers.aosp는 선택사항입니다.
  4. APK 이름을 포함하도록 기기 이미지의 ro.vendor.cts_interaction_helper_packages 속성을 설정합니다. 도우미 구현을 여러 APK에 걸쳐 분리해야 하는 경우 이 속성에 콜론으로 구분된 패키지 목록을 포함할 수 있습니다.
  5. CTS용 Tradefed를 실행할 때 APK가 testcases 디렉터리에서 사용 가능한지 확인합니다. 필요한 경우 logcat 메시지를 검사하여 예상 도우미 구현 클래스가 선택되었는지 확인합니다.
  6. 선택사항이지만 적극 권장: AOSP에 도우미 구현을 제출하거나 서드 파티 테스트에 사용할 수 있도록 하세요.

도우미 구현 예

예를 들어, CtsPrintTestCasesICtsPrintHelper에 정의된 인터페이스를 가진 도우미가 필요합니다. AOSP 구현은 com.android.cts.helpers.aosp.DefaultCtsPrintHelper라고 합니다.

인쇄 UI를 맞춤설정하는 경우 DefaultCtsPrintHelper를 서브클래스로 하는 com.oem.cts.helpers.OemCtsPrintHelper를 만들 수 있습니다. Android.bpandroid_test_helper_appcom.oem.cts.helpers라고 하며 이는 com.oem.cts.helpers.apk를 생성하고 AndroidManifest.xmlOem으로 interaction-helpers-prefix를 선언합니다.

기기 속성 ro.vendor.cts_interaction_helper_packagescom.oem.cts.helpers로 설정됩니다.

참조 구현

참조 구현에는 cts/libs/helpers 아래의 인터페이스와 cts/helpers 아래의 기본 AOSP 도우미가 포함됩니다. 최상위 인터페이스는 cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java에 문서화되어 있습니다.

CTS 테스트를 도우미에 연결하려면, 테스트 소유자가 cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java에 문서화된 @Rule 정의를 사용합니다.

프레임워크를 사용하는 각 CTS 모듈 및 예상 도우미 동작은 cts/libs/helpers/core/src/com/android/cts/helpers에 정의된 인터페이스에 문서화됩니다.

CTS 테스트 실행

도우미 없이 테스트

하나의 속성을 제외하면 도우미 없이 테스트하기 위한 옵션은 런타임 시 기기에 존재하지 않지만, 옵션을 통해 CTS 테스트가 기기와 상호작용하는 방식을 수정합니다. 도우미 구현 없이 CTS를 실행해야 하는 경우 두 가지 옵션이 있습니다.

  • 기기에서 ro.vendor.cts_interaction_helper_packages 속성을 삭제합니다. 이렇게 하면 빌드에서 도우미가 전혀 사용되지 않습니다.
  • CTS를 실행하기 전에 testcases 디렉터리에서 도우미 APK를 삭제합니다. 이렇게 하면 APK가 testcases에 복원될 때까지 도우미가 모든 실행에 사용되지 않습니다.

Tradefed 인수와 도우미 APK가 로드되는 ro.vendor.cts_interaction_helper_packages 속성 제어를 사용하여 기본 설정을 변경할 수 있습니다.

사용 가능한 각 설정에 예상되는 값이나 범위는 다음과 같습니다.

  • ro.vendor.cts_interaction_helper_packages는 콜론으로 구분된 문자열이며 패키지 이름을 포함합니다. OEM 도우미 구현에 유효한 패키지 선택인 모든 값을 취할 수 있습니다.
  • cts-tradefed는 하나의 테스트 실행에 필요한 속성을 일시적으로 변경하는 device-interaction-helper:property-name 인수를 허용합니다(예: --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'). 속성 이름값은 기기에서 설정한 모든 속성이 될 수 있습니다. 속성값에는 위에 설명한 ro.vendor.cts_interaction_helper_packages 속성과 동일한 제한사항이 있습니다.

맞춤설정을 사용하여 테스트

기본적으로 참조 구현은 스톡 Android에서 CTS를 통과합니다. 파트너 구현이 UI 맞춤설정을 사용하여 CTS를 통과하는지 확인해야 합니다. 맞춤설정된 UI 또는 기능을 다루는 CTS 모듈을 실행합니다.

특정 CTS 모듈이나 도우미는 아직 일부 맞춤설정을 지원하지 않을 수도 있습니다.

  • 맞춤설정하려는 UI와 상호작용하는 CTS 모듈은 도우미 프레임워크를 사용하지 않을 수 있습니다. CTS 모듈은 수요와 테스트 소유자 우선순위에 따라 도우미 프레임워크로 변환됩니다. 계획된 기능을 지원하기 위해 CTS 변경을 요청하는 것과 마찬가지로, 일정에 맞추어 변환이 이뤄지도록 프로세스 초기에 변환을 요청해야 합니다.
  • 기존 도우미에서 제공하는 함수가 원하는 맞춤설정을 충분히 처리하지 않을 수도 있습니다. 도우미 함수는 UI 종속 항목을 추상화해야 합니다. 도우미 함수에 간접적으로 UI 종속 항목이 있는 경우 이는 CTS의 버그와 유사하게 처리될 수 있습니다.