이 가이드에서는 개발자 기기 플랫폼 기기 실행 가이드에 따라 트리거된 테스트 및 실행 파일의 결과를 찾는 방법을 설명합니다.
시작하기 전에
이 단계에서는 이미 Google Cloud 프로젝트를 만들고 Developer Device Platform 빠른 시작 가이드의 설정 단계를 완료했으며 터미널에서 gcloud로 인증했다고 가정합니다.
명령줄에서
다음 명령어와 세션 ID를 사용하여 테스트 또는 실행 파일 결과의 기본 요약을 확인합니다.
gcloud beta device-run sessions describe SESSION_ID
그러면 다음과 유사한 결과가 반환됩니다.
Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 all FAILED: 2 test cases failed, 5 passed
job-001 all PASS
--device 플래그로 지정한 각 기기 유형 ID에 대해 세션에서 하나의 작업이 생성됩니다. 작업 색인은 기기 ID의 순서를 따릅니다. 테스트 실패는 예상되는 결과이며 반복적인 개선과 실행을 통해 조사하고 해결해야 합니다.
세션에 대한 추가 세부정보를 가져오려면 다음과 같이 이전에 실행한 describe 명령어에 --full를 추가합니다.
gcloud beta device-run sessions describe SESSION_ID --full
그러면 다음과 유사한 결과가 반환됩니다.
Android 계측
name: projects/PROJECT_ID/locations/global/sessions/session-370961e1
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/app_name_test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidInstallPackages:
installables:
- files:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/app_name.apk
- androidLogcat: {}
requirement:
deviceId: pa3q-35
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
sessionReport:
endTime: '2026-07-30T03:30:05.838Z'
id: 6587313f-fdf7-418a-a9b9-b6fa98dff838
jobReports:
- displayName: job-000
endTime: '2026-07-30T03:30:04.601Z'
executionReports:
- displayName: all
endTime: '2026-07-30T03:30:02.151Z'
id: 29b167dd-dde9-4ea9-b2cd-738049083fc9
outputFiles:
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/logcat.txt
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/instrument.log
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/junit.xml
result:
cause:
summary:
message: One or more test assertions or test methods failed. Inspect the
test runner logs and structured test results for details.
reason: TEST_CASE_FAILURE
type: CUSTOMER
resultType: FAILED
startTime: '2026-07-30T03:29:32.769Z'
status:
progressMessages:
- 2 test cases failed, 5 passed
statusType: DONE
id: 7974e37a-2928-4aaf-abba-3a8b6bae853b
result:
cause:
summary:
message: Job has one or more failed tests. See execution reports for details.
reason: JOB_HAS_FAILED_TESTS
resultType: FAILED
startTime: '2026-07-30T03:28:53.756Z'
status:
statusType: DONE
result:
cause:
summary:
message: Session has one or more failed jobs. See job reports for details.
reason: SESSION_HAS_FAILED_JOBS
resultType: FAILED
startTime: '2026-07-30T03:28:52.702Z'
status:
statusType: DONE
Android 실행 파일
name: projects/PROJECT_ID/locations/global/sessions/session-8a41c2b0
sessionConfig:
displayName: android-executable-session
jobConfigs:
- action:
androidNativeBinary:
androidNativeBinary:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/my_executable
args:
- --example_flag=/data/local/tmp/example_value
- --threads=4
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
- androidPushFiles:
fileConfigs:
- destinationPath: /data/local/tmp/model.tflite
sourceFile:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/model.tflite
requirement:
deviceId: shiba-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
sessionReport:
endTime: '2026-07-30T03:30:05.838Z'
id: 4b9120ec-fdf7-418a-a9b9-b6fa98dff838
jobReports:
- displayName: job-000
endTime: '2026-07-30T03:30:04.601Z'
executionReports:
- displayName: execution-000
endTime: '2026-07-30T03:30:02.151Z'
id: 19a267dd-dde9-4ea9-b2cd-738049083fc9
outputFiles:
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-8a41c2b0/job-000/execution-000/logcat.txt
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-8a41c2b0/job-000/execution-000/output.log
result:
resultType: PASSED
startTime: '2026-07-30T03:29:32.769Z'
status:
statusType: DONE
id: 8874e37a-2928-4aaf-abba-3a8b6bae853b
result:
resultType: PASSED
startTime: '2026-07-30T03:28:53.756Z'
status:
statusType: DONE
result:
resultType: PASSED
startTime: '2026-07-30T03:28:52.702Z'
status:
statusType: DONE
iOS XCTest
다음은 모든 플래그가 사용 설정된 실제 iOS XCTest 실행에서 가져온 gcloud beta device-run sessions
describe SESSION_ID --full의 실제 정제된 출력입니다.
name: projects/PROJECT_ID/locations/global/sessions/session-4b941167-5629-4abb-a8a1-a9814bf16847
sessionConfig:
displayName: xctest-session
jobConfigs:
- action:
iosXcTest:
testsZip:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-10-09_11:33.01234567_ABCD/MyTests.zip
allocationConfig:
deviceConfigs:
- actions:
- iosInstallPackages:
ipas:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-10-09_11:33.01234567_ABCD/AdditionalApp.ipa
requirement:
deviceId: iphonese3-18-4
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
이 출력에서 .../artifacts/output.txt(com.example.app/Documents/ 제외)에 있는 테스트 대상 앱의 가져온 파일을 찾습니다.
웹브라우저에서
자세한 내용은 테스트 출력에서 테스트 결과가 포함된 버킷의 URL을 로드하세요. 다음과 같이 표시됩니다.
https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/
세션은 스토리지에 다음과 같은 경로 형식으로 표시됩니다.
gs://BUCKET_NAME/automation/sessions/SESSION_ID/job-000/EXECUTION_ID/
하이브리드
Google Cloud 콘솔 웹 인터페이스에서 로그를 찾으려면 다음 단계를 따르세요.
- 브라우저에서
gcloud config set project명령어에 사용된 프로젝트 이름을 URLhttps://console.cloud.google.com/?project=에 추가하고 페이지를 로드합니다. - 왼쪽 상단의 메뉴를 펼칩니다.
- I can find Cloud Storage.
- 스토리지 메뉴에서 버킷을 선택합니다.
- 첫 번째 열에서 프로젝트 이름을 클릭합니다.
- thought 자동화를 클릭합니다.
- 세션을 클릭합니다.
- 필터 필드에 최신 테스트 실행의 세션 ID를 붙여넣습니다 (테스트 출력 참조).
- 결과 세션 이름을 클릭합니다.
- job-* 을 선택하여 작업의 모든 실행 및 테스트 사례에서 병합된 결과 세부정보가 포함된
junit.xml(Android 계측 및 iOS XCTest 실행의 경우)를 확인합니다. - 각 개별 실행 또는 샤드의 분석을 위해 execution-* (또는 불안정한 테스트 재시도가
--flaky-test-attempts로 구성된 경우 execution-*-rerun-*)을 엽니다. 세션 유형 및 구성된 플래그에 따라 이 폴더에는 세션 유형 및 구성된 플래그에 따라 수많은 아티팩트가 포함될 수 있습니다. 자세한 내용은 결과 이해를 참조하세요. - 공개 및 인증된 URL을 방문하여 결과를 확인합니다.
파일 구조
Cloud Storage 버킷의 로그 파일을 탐색하여 세션 실행에 대해 자세히 알아봅니다. 파일 구조는 다음과 같습니다.
Android 계측
- gs://BUCKET_NAME/automation
- inputs/
- 2026-05-29_10:13.026220_JZTM
- app.apk
- test.apk
- sessions/
- SESSION_ID
- job-000/
- junit.xml
- execution-000/
- artifacts/
- sdcard/
- output.txt
- bugreport.zip
- dumpsys.txt
- instrument.log
- junit.xml
- logcat.txt
- video.mp4
- execution-001/
- instrument.log
- junit.xml
- logcat.txt
- video.mp4
- job-001/
- SESSION_ID
Android 실행 파일
- gs://BUCKET_NAME/automation
- inputs/
- 2026-05-29_10:13.026220_JZTM
- my_executable
- model.tflite
- sessions/
- SESSION_ID
- job-000/
- execution-000/
- artifacts/
- data/
- local/
- tmp/
- results.json
- bugreport.zip
- dumpsys.txt
- logcat.txt
- output.log
- video.mp4
- job-001/
- SESSION_ID
iOS XCTest
- gs://BUCKET_NAME/
- automation/
- inputs/
- 2026-10-09_11:33.01234567_ABCD/
- AdditionalApp.ipa
- MyTests.zip
- data.txt
- sessions/
- SESSION_ID/
- job-000/
- execution-000/
- artifacts/
- output.txt
- junit.xml
- system.log
이 출력에서 artifacts/ 아래의 가져온 경로를 확인합니다. --paths-to-pull=com.example.app:/Documents/output.txt의 경우 테스트 대상 앱(AUT)에서 가져올 때 서비스는 /Documents를 제거하고 파일을 artifacts/com.example.app/Documents/output.txt가 아닌 artifacts/output.txt에 직접 배치합니다. 추가 앱(--additional-apps)에서 가져온 경우 artifacts/<bundle_id>-genfiles/output.txt에 배치됩니다.
결과 이해
Android 계측 및 iOS XCTest 실행의 경우 출력에 생성된 junit.xml 파일은 표준 JUnit XML 파일입니다. 실행 수준 junit.xml는 각 execution-* 디렉터리에 작성되고 병합된 junit.xml는 각 job-* 디렉터리에 작성됩니다. 이러한 파일에는 테스트 메서드별 결과가 포함되어 있어 각 개별 테스트 메서드의 특정 통과 또는 실패 상태, 실행 시간, 오류 추적을 검토할 수 있습니다. 대부분의 지속적 통합 및 지속적 배포 (CI/CD) 시스템과 테스트 보고 도구를 사용하여 이러한 파일을 쉽게 통합하고 파싱할 수 있습니다.
구조화된 테스트 결과 외에도 각 execution-* 디렉터리에는 플랫폼별 로그와 아티팩트가 포함됩니다.
- Android 계측 실행에는 원시 계측 실행기 출력을 위한
instrument.log와 기기 전체 Android 시스템 로그를 위한logcat.txt가 포함됩니다.--bugreport,--dumpsys또는--video로 사용 설정하면 실행 디렉터리에bugreport.zip,dumpsys.txt, 화면 동영상 녹화도 포함됩니다. - Android 실행 파일 실행에는 실행 파일에서 작성한 표준 출력 (
stdout) 및 표준 오류 (stderr)를 캡처하는output.log와 기기 전체 Android 시스템 로그를 캡처하는logcat.txt(모든 Android 작업에 대해 기본적으로 수집됨)가 포함되며, 선택적--bugreport,--dumpsys또는--video아티팩트도 포함됩니다. - iOS XCTest 실행에는 원시 iOS 기기 syslog를 캡처하는
system.log(모든 iOS XCTest 작업에 대해 기본적으로 수집됨)와 테스트 실행 중에 프로세스가 비정상 종료된 경우의.ips진단 비정상 종료 보고서가 포함됩니다.--video로 사용 설정하면 기록된 각 UI 테스트 사례 동영상이testcases/TEST_CLASS/TEST_METHOD/video.mp4에 저장됩니다. --paths-to-pull로 지정된 가져온 기기 파일은 실행 디렉터리의artifacts/하위 폴더에 저장됩니다.- Android 실행의 경우 가져온 파일은
artifacts/(예:artifacts/sdcard/output.txt또는artifacts/data/local/tmp/results.json) 아래에 기기 경로를 보존합니다. - iOS XCTest 실행의 경우
--paths-to-pull=BUNDLE_ID:DEVICE_PATH를 사용하여 앱 데이터 컨테이너에서 가져온 파일은artifacts/아래에 번들 ID로 구성됩니다.com.example.app가 테스트 중인 앱인 경우artifacts/output.txt에 직접 저장됩니다.com.example.app가 추가 앱 (--additional-apps)인 경우artifacts/com.example.app-genfiles/output.txt에 저장됩니다.
- Android 실행의 경우 가져온 파일은
증빙 서류
다음 단계
다음으로 Developer Device Platform Device Streaming API를 사용해 보세요.