이 가이드에서는 개발자 기기 플랫폼 기기 실행 가이드에 따라 트리거된 테스트 및 실행 파일의 결과를 찾는 방법을 설명합니다.
시작하기 전에
이 단계에서는 이미 프로젝트를 만들고 개발자 기기 플랫폼
빠른 시작 가이드의 설정 단계를 완료했으며 터미널에서 gcloud로 인증했다고 가정합니다. Google Cloud
명령줄에서
이 명령어와 세션 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=에 추가하고 페이지를 로드합니다. - 왼쪽 상단에서 메뉴를 펼칩니다.
- Cloud Storage 를 찾습니다.
- 스토리지 메뉴에서 버킷 을 선택합니다.
- 첫 번째 열에서 프로젝트 이름을 클릭합니다.
- 자동화 를 클릭합니다.
- 세션 을 클릭합니다.
- 필터 필드에 최신 테스트 실행의 세션 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/output.txt (artifacts/com.example.app/Documents/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진단 비정상 종료 보고서가 포함됩니다. --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을 사용해 보세요.