Android 6 또는 Android 7을 실행하는 기기는 Android 기기의 엔터프라이즈 호환성을 검증하는 테스트 모음인 Android Enterprise(AE) 테스트 하네스를 사용하여 기기 프로비저닝을 테스트할 수 있습니다. 하네스에는 지원 앱, 테스트 사례, 구성 파일, cts-tradefed
에서 빌드된 테스트 실행기(afw-test-tradefed
)가 포함됩니다. AE 테스트 하네스를 설정하려면 먼저 기기 관리를 위한 프로비저닝을 완료해야 합니다.
Android 8 이상을 실행하는 기기에서는 AE 테스트 하네스의 사용이 지원 중단되었습니다.
개발 환경 설정
AE 테스트 하네스의 개발 환경은 Android OS와 유사합니다. 요구사항의 단계에 따라 개발 머신을 설정합니다.
소스 코드 다운로드
소스 다운로드의 단계에 따라 AE 테스트 하네스 소스 코드를 다운로드합니다. AE 테스트 하네스 소스 코드는 ./test/AfwTestHarness
프로젝트에 있습니다. 분기 이름에 따라 다운로드할 AE 테스트 하네스 버전이 결정됩니다(Android 플랫폼별로 AE 테스트 하네스 버전이 서로 다름). 예를 들어, Android 7.0 Nougat의 분기 이름은 afw-test-harness-nougat-dev
입니다. 저장소를 초기화하고 이 분기의 소스 코드를 다운로드하려면 다음 명령어를 사용하세요.
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
repo init -u https://android.googlesource.com/platform/manifest -b afw-test-harness-nougat-dev
repo sync -j24
다른 버전용 소스 코드를 확인하려면 관련 태그를 사용하여 분기를 지정하세요. 사용할 수 있는 분기는 다음과 같습니다.
분기 이름 | 지원되는 Android 플랫폼 |
---|---|
afw-test-harness-nougat-dev | Android 7.0 |
afw-test-harness-2.1 | Android 7.0 |
afw-test-harness-marshmallow-dev | Android 6.0 |
afw-test-harness-1.5 | Android 6.0 |
하네스 빌드에 필요한 다른 종속 프로젝트도 소스 코드와 함께 다운로드됩니다.
Android 스튜디오에서 보기
Android 스튜디오에서 소스 코드를 보고 수정하려면 다음을 따르세요.
- 다음 명령어를 실행합니다.
make idegen
development/tools/idegen/idegen.sh
- Android 스튜디오에서
android.ipr
을 엽니다.
AE 테스트 하네스 소스 코드는 test/AfwTestHarness
에 있습니다.
AE 테스트 하네스 구성
test/AfwTestHarness/afw-test.props
를 구성하여 하네스를 맞춤설정할 수 있습니다. 하네스를 실행하려면 다음 단계를 완료하세요.
- 다음 속성을 사용하여
afw-test.props
에서 Wi-Fi 네트워크를 구성합니다.wifi_ssid wifi_password (optional) wifi_security_type (optional, available options are: NONE, WEP or WPA)
- 기기 정책 컨트롤러로 Test DPC에 바인딩된 도메인에서 하나 이상의 계정을 가져옵니다. 다음 속성을 사용하여
afw-test.props
에서 세부정보를 지정합니다.work_account_username work_account_password
AE 테스트 하네스는 Test DPC를 사용하여 프로비저닝 흐름을 테스트하므로 테스트 하네스를 실행하려면 계정이 반드시 Test DPC에 바인딩되어야 합니다.
AE 테스트 하네스 빌드
다음을 사용하여 빌드 구성을 초기화합니다.
source build/envsetup.sh
lunch
기기 유형을 선택하고 Enter를 누릅니다.
다음을 사용하여 하네스를 빌드합니다.
make afw-test-harness -j32
그러면 테스트 하네스를 실행하는 데 필요한 모든 바이너리, 구성 파일, 도구가 포함된 디렉터리(out/host/linux-x86/afw-th/android-cts
)가 생성됩니다. 이 디렉터리는 배포를 위해 파일(out/host/linux-x86/afw-th/android-afw-test-harness.zip
)로 압축됩니다.
AE 테스트 하네스 실행
AE 테스트 하네스를 실행하려면 다음 단계를 따르세요.
- 빌드 환경에서 다음을 사용하여 테스트 실행기를 시작합니다.
afw-test-tradefed
그러면cts-tf
콘솔이 시작되고out/host/linux-x86/afw-th/android-cts
에서 테스트 계획, 테스트 사례 및afw-test.props
가 로드됩니다. android-afw-test-harness.zip
의 압축이 풀린 폴더에서 다음을 사용하여 테스트 실행기를 시작합니다.cts-tf> ./android‐cts/tools/afw-test‐tradefed
android-cts
디렉터리에서 테스트 계획, 테스트 사례 및afw-test.props
를 로드합니다../android‐cts/repository/testcases/afw-test.props
에 직장 계정과 Wi-Fi 구성이 있는지 확인합니다.- 테스트 계획을 실행합니다. 각 테스트 계획은
AfwTestHarness/tests
테스트 패키지 디렉터리의 테스트 패키지 집합이 포함된 XML 파일입니다. 일반적인 계획에는 다음이 포함됩니다.afw-userdebug-build
. userdebug 빌드가 필요한 모든 테스트 패키지가 포함됩니다.afw-user-build
. 사용자 빌드에서 실행되지만 초기 설정 완료 및 USB 디버깅 사용 설정 등 테스트 기기가 올바르게 설정되어야 합니다.
테스트 계획afw-userdebug-build
를 실행하려면 다음을 사용하세요.cts-tf> run cts --plan afw-userdebug-build
테스트 계획을 모두 보려면list plans
명령어를 사용합니다. 계획 정의를 보려면out/host/linux-x86/afw-th/android-cts/repository/plans
를 참조하세요.
- 테스트 패키지를 실행합니다. 단일 테스트 패키지를 실행하려면 다음을 사용합니다.
cts-tf> run cts --package com.android.afwtest.NfcProvisioning
모든 패키지를 보려면list packages
명령어를 사용합니다. 더 많은 옵션을 보려면run cts --help
명령어를 사용합니다.
AE 테스트 하네스 디버깅
afw-test-tradefed 콘솔(cts-tf
)에서 모든 명령어를 실행합니다. 이 콘솔은 afw-test-tradefed
를 실행하여 시작할 수 있습니다.
-l INFO
또는-l DEBUG
플래그로 자세한 정보를 표시합니다. 예:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG
-s
플래그를 사용하여 특정 기기에서 테스트 하네스를 실행합니다. 예를 들면 다음과 같습니다.cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG -s device_sn
--all-devices
플래그를 사용하여 연결된 모든 기기에서 테스트 하네스를 실행합니다. 예를 들면 다음과 같습니다.cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG --all-devices
list invocations
또는l i
를 사용하여 현재 실행 중인 실행 항목을 봅니다.list results
또는l r
을 사용하여 이전 테스트 실행의 요약을 봅니다.help list
를 사용하여 다른list
명령어를 봅니다.afwtest
를 사용하여 필터로 실시간 logcat을 모니터링한 다음 다른 터미널을 열고adb logcat | grep afwtest
를 사용하여 logcat을 시작합니다. 테스트를 완료한 후에는 다음을 따릅니다.out/host/linux-x86/afw-th/android-cts/repository/logs/start-time
에서 로그를 봅니다. 전체 기기 logcat 및 호스트 로그(afw-test-tradefed
로그)는 별도의 ZIP 파일에 저장됩니다.- afwtest의 기기 logcat을 검색하여 관련 정보를 찾습니다. 예:
zless out/host/linux-x86/afw-th/android-cts/repository/logs/start-time/device_logcat_random-number.zip | grep afwtest
- 전체 afw-test-tradefed 로그를 보려면
zless out/host/linux-x86/afw-th/android-cts/repository/logs/start-time/host_log_random-number.zip
을 사용합니다.
- 테스트 패키지는 UI 페이지를 탐색하고 각 페이지의 기기 logcat 파일에 탐색 로그를 기록하여 엔터프라이즈 프로비저닝 흐름을 자동화합니다.
예:
afwtest.AutomationDriver: Navigating:com.android.afwtest.uiautomator.pages.gms.AddAccountPage
테스트 패키지com.android.afwtest.NfcProvisioning
의 UI 페이지에는 다음이 포함됩니다.-
com.android.afwtest.uiautomator.pages.managedprovisioning.NfcProvisioningPage
com.android.afwtest.uiautomator.pages.PageSkipper
com.android.afwtest.uiautomator.pages.LandingPage
-
- 프로비저닝 프로세스 중에 테스트에 실패하면 logcat에 다음과 유사한 오류가 포함됩니다.
TestRunner: java.lang.RuntimeException: Failed to load page: com.android.afwtest.uiautomator.pages.packageinstaller.DeviceAccessPage
위 오류는 일반적으로 이전 UI 페이지 또는 로드에 실패한 페이지의 오류 때문이므로 이 오류가 발생하기 전에 logcat에서 다른 오류 메시지를 찾은 다음 프로비저닝 흐름에 따라 직접 재현해 보세요. - 테스트 패키지에 실패하는 경우:
- 스크린샷은
screenshot-test_test_class_full_name_test_case_name-random_number.png
구문을 사용하여out/host/linux-x86/afw-th/android-cts/repository/logs/start-time
에 저장됩니다. 이 정보는 호스트 로그에도 기록됩니다. - 버그 신고는
bug-test_class_full_name_test_case_name-random_number.zip
으로out/host/linux-x86/afw-th/android-cts/repository/logs/start-time
에 저장됩니다.
- 스크린샷은
- 모든 테스트 패키지가 실행되면 스크린샷이 생성되어
screenshot-random_number.png
로out/host/linux-x86/afw-th/android-cts/repository/logs/start-time
에 저장됩니다. 이 정보는 호스트 로그에도 기록됩니다.
FAQ
사용자 빌드로 플래시된 기기에서 afw-userdebug-build
테스트 계획을 실행할 수 있나요?
아니요. afw-userdebug-build
계획의 테스트 패키지는 실제 테스트 흐름을 실행하기 전에 테스트 기기를 초기화하며 adb
디버깅은 자동으로 사용 설정되어야 합니다. 사용자 빌드를 사용하는 경우 개발자 옵션에서 직접 설정을 변경해야만 adb
디버깅을 사용 설정할 수 있습니다.
userdebug 빌드로 플래시된 기기에서 afw-user-build
테스트 계획을 실행할 수 있나요?
예, 하지만 이 테스트 계획은 사용자 빌드에서 실행하는 것이 좋습니다.
UI 로드에 시간이 너무 많이 걸려 테스트에 실패하는 경우가 있습니다. 이 문제를 해결하려면 어떻게 해야 하나요?
./android-cts/repository/testcases/afw-test.props
에서 timeout_size
설정을 구성합니다. 유효한 설정은 S, M, L, XL, XXL입니다.
프로비저닝이 완료되면 설치된 초기 설정에 맞춤설정된 UI(예: 이용약관)가 표시되기 때문에 테스트 패키지 com.android.afwtest.NfcProvisioning
(또는 SuwDoProvisioning
)이 기기에서 실패합니다. 맞춤설정된 UI를 건너뛰려면 어떻게 해야 하나요?
프로비저닝 프로세스 후에는 최소한의 UI가 있어야 합니다. UI에 다음 단어 즉, 건너뛰기, 마침, 완료, 수락, 동의, 다음, 계속 또는 계속 진행 중 하나를 포함하는 의미 있는 텍스트 또는 내용 설명이 포함된 버튼이 있으면 테스트 하네스에서는 그러한 UI를 자동으로 건너뜁니다. 또는 afw-test.props
에서 버튼을 정의하여 UI를 건너뛰도록 테스트 하네스를 구성할 수도 있습니다. 예를 들면 다음과 같습니다.
oem_widgets=your_btn your_btn.text=your_customized_text your_btn.package=your_package your_btn.action=click
여러 위젯을 정의하려면 쉼표로 구분하세요.
테스트 패키지 com.android.afwtest.NfcProvisioning
(또는 SuwDoProvisioning
)에 실패했으며 마지막 UI 화면이 '계정 확인'입니다. 왜 이런 일이 발생하나요? 또 테스트 기기를 복구하려면 어떻게 해야 하나요?
이 실패는 이전 테스트 패키지가 테스트가 끝날 때 초기화 보호 설정을 지우지 못했기 때문에 발생합니다. 기기를 잠금 해제하려면 계정을 직접 입력해야 합니다.
기기를 초기화하는 데 시간이 더 걸립니다. 초기화 시간 제한을 늘릴 수 있나요?
예. afw-test.props
에서 factory_reset_timeout_min
설정을 구성합니다. 유효한 설정은 분 단위입니다. 기기에 맞게 시간을 분 단위로 설정할 수 있습니다.