이 페이지에서는 개발자 기기 플랫폼을 사용한 테스트 실행과 관련하여 자주 묻는 질문에 대한 답변과 문제 해결 도움말을 제공합니다. 원하는 내용을 찾을 수 없거나 추가 도움이 필요한 경우 Google에 문의하세요.
문제 해결
테스트를 실행하는 데 시간이 오래 걸리는 이유는 무엇인가요?
개발자 기기 플랫폼 카탈로그에서 용량 수준이 높은 기기를 선택하면 테스트가 더 빠르게 시작될 수 있습니다. 기기의 용량이 부족하면 테스트 실행 시간이 길어질 수 있습니다. 호출된 테스트의 수가 선택한 기기의 용량보다 훨씬 크면 테스트를 완료하는 데 시간이 더 오래 걸릴 수 있습니다
다음과 같은 요인으로 인해 기기 용량 수준에서 실행되는 테스트가 더 오래 걸릴 수 있습니다.
- 트래픽: 기기 가용성 및 테스트 속도에 영향을 미칩니다.
- 기기 또는 인프라 장애: 언제든지 발생할 수 있습니다. 개발자 기기 플랫폼에 대해 보고된 인프라 장애가 있는지 확인하려면 Google Cloud Personalized Service Health 대시보드를 참고하세요.
Developer Device Platform의 기기 용량에 관해 자세히 알아보려면 기기 카탈로그를 참고하세요.
불충분한 테스트 결과가 표시되는 이유는 무엇인가요?
불충분한 테스트 결과는 일반적으로 테스트 실행 취소 또는 인프라 오류 때문에 발생합니다. PASSED 및 FAILED 외에도 개발자 기기 플랫폼은 ERROR, TIMED_OUT, CANCELLED를 반환할 수 있습니다.
인프라 오류는 네트워크 오류나 예상치 못한 기기 동작과 같은 내부 개발자 기기 플랫폼 문제로 인해 발생합니다. Developer Device Platform은 불충분한 결과를 보고하기 전에 인프라 오류를 여러 번 유발한 테스트 실행을 내부적으로 재시도합니다.
오류의 원인을 파악하려면 다음 단계를 따르세요.
- Google Cloud 서비스 상태 대시보드에서 알려진 서비스 중단이 있는지 확인합니다.
개발자 기기 플랫폼에서 테스트를 재시도하여 재현 가능한지 확인합니다.
해당하는 경우 다른 기기 또는 기기 유형에서 테스트를 실행해 봅니다. 자세한 내용은 기기 카탈로그를 참고하세요.
샤딩으로 인해 테스트가 더 오래 실행되는 이유는 무엇인가요?
지정된 샤드 수가 개발자 기기 플랫폼에서 사용할 수 있는 기기 수를 초과할 경우 샤딩으로 인해 테스트가 더 오래 실행될 수 있습니다. 이러한 상황을 방지하려면 기기 수를 샤드 수로 제한하세요. 다른 기기 선택에 관한 자세한 내용은 기기 카탈로그를 참고하세요.
테스트를 시작하는 데 시간이 오래 걸리는 이유는 무엇인가요?
테스트 요청을 제출하면 기기에서 테스트를 실행하기 위해 먼저 앱을 검증하고 다시 서명하는 등의 준비 과정을 거칩니다. 일반적으로 이 프로세스는 몇 초 이내에 완료되지만 앱의 크기와 같은 요소에 영향을 받을 수 있습니다.
앱이 준비되면 테스트 실행이 예약되고 기기에서 테스트를 실행할 준비가 될 때까지 큐에 남아 있습니다.
테스트를 완료하는 데 시간이 오래 걸리는 이유는 무엇인가요?
테스트 실행이 완료되면 기기에서 테스트 아티팩트를 다운로드하여 처리한 다음 Cloud Storage에 업로드합니다. 이 단계에 소요되는 시간은 아티팩트의 양과 크기에 영향을 받을 수 있습니다.
Android 관련 문제 해결
앱에서 데이터가 반환되지 않아 스크린샷을 찾을 수 없습니다
테스트 실행 아티팩트 (예: 스크린샷, 로그 파일)는 Cloud Storage에 저장되고 Google Cloud 콘솔에 직접 렌더링됩니다. 프로젝트 수준 역할을 할당했는지 확인합니다.
또한 개발자 기기 플랫폼에는 사용자의 사용자 인증 정보가 아닌 자체 사용자 인증 정보를 사용하여 다음 작업을 실행하는 전용 서비스 에이전트가 있습니다.
- Cloud Storage 버킷 및 객체 읽기 및 쓰기
- Cloud Storage 입력 파일을 내부 시스템에 다운로드
- 내부 시스템에서 Cloud Storage 출력 버킷으로 파일 업로드
Cloud Storage 버킷과 파일에 액세스할 수 있지만 해당 버킷이 DDP에서 사용되는 프로젝트와 다른 Google Cloud 프로젝트에 소유되어 있을 수 있습니다. 따라서 개발자 기기 플랫폼 서비스 계정에는 액세스 권한이 없습니다.
개별 버킷에 추가 액세스 제어가 있을 수도 있습니다. 테스트에 파일을 포함하는 방법은 기기 실행을 참고하세요.
계측 테스트 사례 결과가 일부만 표시되거나 누락되는 이유는 무엇인가요?
계측 테스트를 실행할 때 총 테스트 사례가 예상보다 적을 수 있습니다. 이 문제는 일반적으로 개발자 기기 플랫폼이 AndroidJUnitRunner에서 일반적으로 생성되는 테스트 사례 시작 또는 종료 마커의 logcat을 파싱할 수 없기 때문에 발생합니다.
이 문제의 일반적인 원인은 다음과 같습니다.
| 문제 설명 | 가능한 해결 방법 |
|---|---|
| 제한 시간으로 인해 테스트 사례가 실행되지 않았습니다. 총 테스트 기간이 지정한 제한 시간 또는 최대 제한 시간보다 길면 개발자 기기 플랫폼에서 나머지 테스트 사례를 취소합니다. |
|
| 테스트 사례가 너무 일찍 종료되거나 중단되어 테스트를 완료하지 못했습니다. 포착하지 못한 예외나 어설션 오류로 인해 테스트 사례가 너무 일찍 종료될 수 있습니다. 예를 들어 앱이 올바른 뷰를 표시하지 않고 테스트 사례가 UI에서 작업을 수행할 수 없는 경우 테스트 사례가 무한 루프에 빠지거나 진행되지 않을 수 있습니다. |
동영상과 logcat을 확인하여 테스트가 중지된 위치를 조사하세요.
|
커스텀 테스트 실행기(AndroidJUnitRunner 확장 포함)가 예기치 않게 비정상 종료되거나 logcat에 예기치 않은 테스트 사례 시작 또는 종료 마커를 작성했습니다.
|
테스트 실행기 코드를 확인합니다. |
logcat에 작성된 과도한 로그로 인해 버퍼가 초과되거나 logcat 프로세스가 비정상 종료되었습니다.
|
logcat에 대한 쓰기를 줄입니다.
|
| 테스트 중인 앱이 비정상 종료되었습니다. | 앱을 디버그합니다. |
자주 묻는 질문(FAQ)
개발자 기기 플랫폼 가격 정보는 어디에서 확인할 수 있나요?
자세한 내용은 가격 책정 및 결제 관련 문의를 참고하세요.
해상도 등의 기기 세부정보는 어디에서 찾을 수 있나요?
자세한 기기 정보는 API를 통해 제공되며 device-run devices describe <device-id> 명령어를 사용하여 개발자 기기 플랫폼 CLI에서 액세스할 수 있습니다.
gcloud beta device-run devices describe DEVICE_ID
내 백엔드에 도달하는 트래픽이 개발자 기기 플랫폼에서 출발했는지 확인하려면 어떻게 해야 하나요?
백엔드에서 Google IP 범위와 소스 IP 주소를 대조하면 트래픽이 개발자 기기 플랫폼에서 호스팅되는 테스트 기기에서 출발했는지 확인할 수 있습니다.
개발자 기기 플랫폼은 VPC-SC와 함께 작동하나요?
개발자 기기 플랫폼은 개발자 기기 플랫폼의 내부 스토리지와 사용자 결과 버킷 간에 앱 및 기타 테스트 아티팩트의 복사를 차단하는 VPC-SC와 함께 작동하지 않습니다.
개발자 기기 플랫폼에서 불안정한 테스트를 줄이려면 어떻게 해야 하나요?
테스트에서 불안정한 동작을 감지하려면 --flaky-test-attempts 옵션을 사용하는 것이 좋습니다. 불안정 제거 재실행도 일반 테스트 실행과 마찬가지로 요금이 청구되거나 일일 할당량에 반영됩니다.
다음 사항에 유의하세요.
- DDP는 기본적으로 비용을 절약하기 위해 순차적으로 재시도를 실행합니다. 사용자는
--flaky-test-parallel-retry를 병렬로 실행하도록 설정해야 합니다. --flaky-test-retry-level플래그는shard또는 개별test수준에서 재시도할지 여부를 정의하며 기본값은shard입니다. 재시도 테스트 크기와 기간을 줄이려면test로 설정하세요.
iOS 관련 FAQ
개발자 기기 플랫폼에서 Appium, Flutter/FlutterDriver, ReactNative/Jest, Cucumber가 지원되나요?
일부는 로드맵에 포함되어 있기는 하지만 현재로서는 이러한 테스트 및 앱 개발 플랫폼 지원을 약속할 수 없습니다.
iOS 테스트 결과에 동영상이 누락된 이유는 무엇인가요?
iOS 18 이상에서는 검색 결과에 동영상이 표시될 예정입니다.
Android 관련 FAQ
Developer Device Platform은 웨어러블 기기를 지원하나요?
예. 개발자 기기 플랫폼은 Google Pixel Watch를 지원합니다. 이제 Google Pixel Watch의 독립형 Wear OS 앱에서 테스트를 실행할 수 있습니다. Developer Device Platform 기기에 관해 자세히 알아보려면 기기 카탈로그를 참고하세요.
Developer Device Platform은 최신 Google 기기를 지원하나요?
예. 개발자 기기 플랫폼은 Google Pixel Tablet 및 Google Pixel Fold를 지원합니다. 독립형 실제 기기에서 테스트를 실행할 수 있습니다. Developer Device Platform에서 사용할 수 있는 기기에 관해 자세히 알아보려면 기기 카탈로그를 참고하세요.
개발자 기기 플랫폼에서 Appium, Flutter/FlutterDriver, ReactNative/Jest, Cucumber가 지원되나요?
일부는 로드맵에 포함되어 있기는 하지만 현재로서는 이러한 테스트 및 앱 개발 플랫폼 지원을 약속할 수 없습니다. 그러나 Espresso를 지원하는 프레임워크 (예: Flutter)로 앱을 빌드한 경우 Espresso를 사용하여 계측 테스트를 작성한 후 개발자 기기 플랫폼에서 테스트할 수 있습니다.
개발자 기기 플랫폼에서 ProGuard 또는 R8 등으로 난독화된 앱 테스트가 지원되나요?
개발자 기기 플랫폼은 난독화 또는 난독화 해제를 명시적으로 지원하지 않습니다. 앱이 실행될 가능성이 높지만 스택 트레이스와 같은 난독화된 앱 데이터는 로그에서 난독화된 것으로 표시됩니다.
개발자 기기 플랫폼에서 테스트하는 동안 폴더블 기기를 다양한 폴더블 상태 및 모드로 사용할 수 있나요?
예. 폴더블 상태 및 모드에서 폴더블 기기를 테스트할 수 있습니다.
폴더블 기기는 FLAT(완전히 열린 상태) 또는 HALF_OPENED(완전히 열린 상태와 완전히 닫힌 상태 사이) 등 다양하게 접힌 상태일 수 있습니다.
반면 모드는 특정 기기 방향과 폴더블 상태로 구성됩니다. 예를 들어 테이블탑 모드는 가로 방향에서 HALF_OPENED 상태이며, 책 모드는 세로 방향에서 HALF_OPENED 상태입니다.
계측 테스트를 실행하는 경우 Jetpack WindowManager 라이브러리를 사용하고 폴더블에서 앱 테스트 문서를 따라 다양한 상태와 모드를 테스트할 수 있습니다.
또는 사용 가능한 상태는 기기에 따라 다르며 adb
shell command cmd device_state를 사용하여 상호작용할 수 있습니다.
- 현재 상태를 나열하려면
adb shell cmd device_state state를 실행합니다. - 현재 상태를 설정하거나 재정의하려면
adb shell cmd device_state state <IDENTIFIER>를 실행합니다. - 상태를 재설정하려면
adb shell cmd device_state state reset을 실행합니다. - 사용 가능한 상태를 확인하려면 폴더블 기기에서
adb shell cmd device_state print-states명령어를 실행합니다.
Google Pixel Fold(모델 ID felix)
$ adb shell cmd device_state print-states
Supported states: [
DeviceState{identifier=0, name='CLOSED', app_accessible=true},
DeviceState{identifier=1, name='HALF_OPENED', app_accessible=true},
DeviceState{identifier=2, name='OPENED', app_accessible=true},
DeviceState{identifier=3, name='REAR_DISPLAY_STATE', app_accessible=true},
]
Samsung Galaxy Z Fold4(모델 ID q4q)
$ adb shell cmd device_state print-states
Supported states: [
DeviceState{identifier=0, name='CLOSE', app_accessible=true},
DeviceState{identifier=1, name='TENT', app_accessible=true},
DeviceState{identifier=2, name='HALF_FOLDED', app_accessible=true},
DeviceState{identifier=3, name='OPEN', app_accessible=true},
]
앱이 없어도 개발자 기기 플랫폼을 사용해 볼 수 있나요?
다른 개발자 기기 플랫폼 제품과 달리 개발자 기기 플랫폼을 사용하기 위해 개발자 기기 플랫폼 SDK를 추가하지 않아도 됩니다. 아직 앱이 없는 경우 온라인으로 APK를 다운로드하거나 AndroidX GitHub 저장소의 샘플 중 하나에서 앱과 테스트 APK를 빌드할 수 있습니다. 계측 테스트에는 소스 코드에서 빌드된 앱과 테스트 APK가 모두 필요합니다. 자세한 내용은 계측 테스트를 참고하세요.
Developer Device Platform 기능에 대해 자세히 알아보려면 DDP 제품 개요를 참고하세요.
스크린샷 비교 테스트에 가장 적합한 기기는 무엇인가요?
스크린샷 비교 테스트에서는 테스트를 실행하는 동안 얻은 화면 이미지를 예상 동작을 나타내는 골든 이미지와 비교하여 테스트 어설션을 작성합니다. 이러한 테스트는 일부 기기 유형에서 더 불안정할 수 있습니다. 이러한 종류의 테스트에는 Arm(*.arm) 에뮬레이터 기기를 타겟팅하는 것이 좋습니다. Arm 에뮬레이터 기기는 Android 스튜디오 일반 에뮬레이터와 매우 유사하거나 동일한 이미지를 사용합니다.
또한 예상 변경사항이 있을 때 스크린샷 테스트를 더 강력하게 만드는 데 도움이 되는 테스트 라이브러리를 조사하는 것이 좋습니다.
Developer Device Platform에서 가상 기기를 업데이트하나요?
예. 가상 기기는 다음과 같은 변경사항이 적용되면 업데이트됩니다.
- 기존 이미지 업데이트
- 이전 API 수준 지원 중단
- 새로운 Android API 수준이 추가됨
적용 범위 보고서를 사용 설정하려면 어떻게 해야 하나요?
적용 범위 보고서를 사용 설정하려면 additional-test-options 필드에 coverage=true를 추가하세요.
Android Test Orchestrator를 사용하는 경우 적용 범위 결과를 저장할 디렉터리 경로를 제공해야 합니다.
--additional-test-options coverage=true,coverageFilePath=/sdcard/Download/
Orchestrator를 사용하지 않는 경우 파일 경로를 지정할 수 있습니다.
--additional-test-options coverage=true,coverageFile=/sdcard/Download/coverage.ec
휴대전화 없이 Wear 앱에 로그인하려면 어떻게 해야 하나요?
앱에 일반적으로 로그인을 위한 전화번호가 필요한 경우 로그인 건너뛰고 테스트 빌드에 삽입된 토큰을 사용하거나 --other-files-to-push 플래그를 사용하여 일반적으로 푸시되는 디스크의 파일에서 읽는 빌드 변형을 만들 수 있습니다.