Developer Device Platform 기기 실행 개요

클라우드에서 실제 및 가상 Android 기기와 실제 iOS 기기에서 테스트를 실행할 수 있는 개발자 기기 플랫폼 기기 실행에 오신 것을 환영합니다. 이 페이지에서는 Android 및 iOS 테스트 실행 간의 공통점을 설명합니다. 플랫폼별 단계는 Android 기기 실행 및 iOS 기기 실행을 참고하세요.

이 Google Cloud CLI를 사용하려면 Google Cloud 프로젝트 ID를 제공해야 합니다. 명령어 요약은 gcloud beta device-run를 참고하세요.

다음 플래그는 필수입니다.

  • 기기: --device: --device shiba-35 또는 --device iphonese3-18-4를 사용하여 기기를 지정합니다.
  • 테스트: --test: --test /path/to/test.apk 또는 --test /path/to/test.ipa를 사용하여 테스트 APK 또는 IPA를 지정합니다.

다음 구성 옵션은 Android 및 iOS 테스트 모두에 공통입니다.

입력 및 출력 Cloud Storage 경로

  • 커스텀 Cloud Storage 버킷: 입력 및 출력에 사용할 커스텀 Cloud Storage 버킷을 지정할 수 있습니다. --bucket-name=my-custom-bucket --bucket-name= 플래그를 사용하여 Cloud Storage 버킷을 지정하지 않으면 Google Cloud CLI에서 PROJECT_ID-devicerun라는 기본 버킷을 사용합니다.
  • 입력 파일: --test, --additional-apps 또는 --xctestrun-file 플래그로 로컬 경로를 지정하면 명령어를 실행할 때마다 Google Cloud CLI가 gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ 아래의 Cloud Storage 버킷에 자동으로 복사합니다. 여기서 BUCKET_NAME는 기본적으로 PROJECT_ID-devicerun입니다.
  • 클라우드 경로: 대용량 파일을 업로드하는 데 시간이 오래 걸릴 수 있으므로 Cloud Storage gs:// 경로를 사용하여 직접 참조하면 업로드 시간을 절약할 수 있습니다.
  • 결과 파일: 출력 아티팩트가 gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/ 아래의 Cloud Storage 버킷에 업로드됩니다.

동기 및 비동기 실행

기본적으로 제출 명령어는 차단 (동기)입니다. 테스트가 완료될 때까지 기다린 후 결과의 요약 표를 출력합니다.

Cloud Storage에 파일을 업로드한 후 세션을 제출하고 즉시 반환하려면 --async 플래그를 추가합니다.

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --async

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --async

이렇게 하면 세션 ID가 즉시 반환됩니다. 그런 다음 sessions wait 명령어를 사용하여 기다릴 수 있습니다.

gcloud beta device-run sessions wait SESSION_ID

작업이 완료될 때까지 명령어가 차단됩니다.

여러 기기

여러 기기에서 동일한 테스트를 실행하려면 --device 플래그에 쉼표로 구분된 여러 기기 ID를 제공하거나 각각 고유한 기기 ID를 지정하는 여러 --device 플래그를 제공합니다.

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34,tokay-36 \
  --test ./ANDROID_TESTS.apk

또는

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34 \
  --device tokay-36 \
  --test ./ANDROID_TESTS.apk

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4,iphonese3-26-3 \
  --test ./IOS_TESTS.zip

또는

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --device iphonese3-26-3 \
  --test ./IOS_TESTS.zip

테스트 제한시간

테스트 실행 시간을 제한합니다.

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --instrumentation-timeout=10m

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xctest-timeout=10m

유효한 범위는 1m~1h이며 기본값은 5m입니다.

소프트웨어 버전

사용 가능한 소프트웨어 패키지 및 AndroidX Test Orchestrator와 Apple Xcode 버전을 검색하고 사용하며, 테스트 실행을 구성하기 전에 수명 주기, 지원되는 버전, 메타데이터를 검사합니다.

먼저 사용 가능한 모든 소프트웨어 패키지와 버전을 나열합니다.

gcloud beta device-run software-versions list

다음과 유사한 출력이 표시됩니다.

ID                                NAME                              SOFTWARE_TYPE               VERSION  STATE   IS_DEFAULT
androidx-test-orchestrator-1-4-1  AndroidX Test Orchestrator 1.4.1  ANDROIDX_TEST_ORCHESTRATOR  1.4.1    ACTIVE  True
androidx-test-orchestrator-1-6-1  AndroidX Test Orchestrator 1.6.1  ANDROIDX_TEST_ORCHESTRATOR  1.6.1    ACTIVE
xcode-16-4                        Xcode 16.4                        XCODE                       16.4     ACTIVE
xcode-26-2                        Xcode 26.2                        XCODE                       26.2     ACTIVE  True

그런 다음 목록에서 정확한 리소스 ID를 사용하여 특정 패키지를 설명합니다.

Android

gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1

iOS

gcloud beta device-run software-versions describe xcode-16-4

다음과 유사한 출력이 표시됩니다.

Android

id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
  state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1

iOS

id: xcode-16-4
lifecycle:
  state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:

-   '15.0'
-   '15.1'
-   '15.2'
-   '15.4'
-   '15.7'
-   '16.0'
-   '16.1'
-   '16.2'
-   '16.3'
-   '16.5'
-   '16.6'
-   '18.0'
-   '18.3'
-   '18.4'
version: '16.4'

이제 사용할 수 있는 소프트웨어 버전을 알았으므로 다음과 같이 --orchestrator-version 또는 --xcode-version 플래그를 사용하여 테스트 실행에서 사용할 수 있습니다.

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --orchestrator-version=1.4.1

자세한 내용은 오케스트레이터 사용 설정을 참고하세요.

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

자세한 내용은 iOS용 기기 실행을 참고하세요.

입력 검증

개발자 기기 플랫폼은 아티팩트를 비롯한 입력을 검증하려고 시도하며 잘못된 입력이 발생하면 PASSED 또는 FAILED 대신 ERROR를 반환합니다.

Session [session-94b57778] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   ERROR

이제 --full를 sessions describe 명령어에 추가하여 세션에 대한 자세한 내용을 확인합니다.

gcloud beta device-run sessions describe --full session-94b57778

그러면 다음과 유사한 출력이 생성됩니다.

name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
  displayName: instrumentation-session
  jobConfigs:
  -   action:
      androidInstrumentationTest:
        testInstallable:
          files:
          -   gcsInputFile:
              path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
    allocationConfig:
      deviceConfigs:
      -   actions:
        -   androidLogcat: {}
        requirement:
          deviceId: mediumphone-arm-34
    displayName: job-000
  outputDirectoryConfig:
    gcsOutputDirectory:
      path: gs://user-test1-devicerun/automation/sessions
sessionReport:
  endTime: '2026-09-16T18:55:49.721Z'
  id: ed681f23-669b-4464-8a93-b28456e58136
  jobReports:
  -   displayName: job-000
    endTime: '2026-09-16T18:55:45.839Z'
    executionReports:
    -   displayName: execution-000
      endTime: '2026-09-16T18:55:46.694Z'
      id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
      result:
        cause:
          summary:
            message: The instrumentation target package does not match any of the
              installable packages.
            reason: INSTRUMENTATION_TARGET_MISMATCH
            type: CUSTOMER
        resultType: ERROR
      startTime: '1970-01-01T00:00:00Z'
      status:
        statusType: PENDING
    id: 953b5106-3c20-40f0-aceb-18af89cd1b83
    result:
      cause:
        summary:
          message: The instrumentation target package does not match any of the installable
            packages.
          reason: INSTRUMENTATION_TARGET_MISMATCH
          type: CUSTOMER
      resultType: ERROR
    startTime: '2026-09-16T18:55:31.651Z'
    status:
      statusType: DONE
  result:
    resultType: ERROR
  startTime: '2026-09-16T18:55:24.442Z'
  status:
    statusType: DONE

다음 단계

개발자 기기 플랫폼으로 Android 테스트 실행 또는 iOS 테스트 실행