Firebase Test Lab에서 개발자 기기 플랫폼으로 이전

개발자 기기 플랫폼 (DDP)에서 gcloud beta device-run 명령줄 인터페이스의 미리보기를 발표하게 되어 기쁩니다. 이는 gcloud firebase test CLI의 개선사항입니다.

gcloud beta device-run CLI는 실제 기기와 가상 기기 모두에서 온디바이스 자동화 및 계측 테스트를 실행하는 작업을 간소화하고 현대화합니다. 미리보기 출시에서는 Android 계측 및 iOS XCTest 가 지원됩니다. 안내는 기기 실행 개요를 참고하세요.

개요 및 이점

Firebase Test Lab에서 Developer Device Platform (DDP)으로 전환하면 특히 비용 절감, 테스트 실행 속도, 고급 디버깅, AI 기반 워크플로의 기본 제공 지원 측면에서 여러 가지 주요 이점이 있습니다.

클라우드에서 모바일 테스트를 실행하는 개발자는 다양한 구성 모델 (Firebase Test Lab)을 저글링하거나 추가 파이프라인 및 도구 래퍼 레이어 (Flank)를 유지해야 합니다.

Developer Device Platform의 gcloud beta device-run CLI는 이러한 기능을 핵심 Google Cloud CLI에 직접 병합합니다. 실제 기기와 가상 기기 모두에서 테스트를 예측 가능하고 효율적으로 실행하는 더 강력하고 선언적이며 확장 가능한 백엔드 인터페이스를 제공합니다.

DDP를 Firebase Test Lab보다 우수한 플랫폼으로 만드는 주요 기능은 다음과 같습니다.

고급 스마트 샤딩

Firebase Test Lab은 테스트를 샤딩하기 위해 단일 실행 타이밍 데이터에 의존하지만 DDP의 스마트 샤딩은 훨씬 더 지능적입니다.

  • _30일간의 과거 데이터_: DDP는 최대 30일간의 실행 기록을 분석하여 테스트를 안정적이고 최적화된 샤드로 배포합니다.
  • 기기별 기간 추적: DDP는 모든 기기에서 일반화된 플랫폼 평균을 사용하는 대신 특정 기기 모델별로 테스트 실행 런타임을 추적합니다.
  • Orchestrator 오버헤드 모델링: DDP는 각 테스트 인스턴스의 Android Test Orchestrator의 시작 오버헤드를 고려하여 샤드가 대상 기간을 초과하지 않도록 합니다.

세분화되고 비용 효율적인 재시도

Test Lab에서 샤드 내의 단일 테스트 사례가 실패하면 전체 샤드(수십 개의 테스트가 포함될 수 있음)를 재시도해야 하므로 실행 시간과 청구 비용이 모두 증가합니다. DDP는 매우 효율적인 재시도 메커니즘을 도입합니다.

  • 타겟 테스트 사례 수준 재시도: 샤드 내에서 실패한 특정 테스트 사례만 격리하고 재시도합니다.
  • 순차적 불안정한 테스트 재시도: 불안정한 테스트의 재시도를 기본적으로 순차적으로 실행합니다 (Test Lab과 같이 동시에 실행하지 않음). 이를 테스트 사례 수준 재시도와 결합하면 총 테스트 실행 횟수가 크게 줄어들어 기기 청구 비용을 크게 절감할 수 있습니다.

Android 테스트 고급 지원

DDP는 Test Lab 테스트 API의 오랜 제한사항을 해결합니다.

  • 테스트 APK만 (더미 앱 없음): Test Lab은 자체 계측 테스트를 실행하기 위해 더미 앱이 필요했습니다. DDP는 테스트 APK만으로 계측 테스트 실행을 지원합니다.
  • 확장된 샤드 제한 시간: DDP는 단일 계측 테스트 샤드의 최대 실행 한도를 Test Lab의 45분 제한에서 3시간으로 늘립니다.
  • 여러 Orchestrator: DDP는 여러 Android Test Orchestrator 버전을 지원합니다.
  • 기본 제공 C++ 바이너리 지원: DDP는 Android C++ 바이너리 실행을 지원합니다.

풍부한 기기 상호작용 및 고급 디버깅

DDP는 Test Lab에서 제공되는 것보다 더 심층적인 온디바이스 상호작용과 훨씬 더 풍부한 디버깅 아티팩트를 제공합니다.

  • 가상 위치: DDP는 기기 GPS 좌표 모의를 지원합니다.
  • ApkSets 지원: 개발자는 ApkSets (.apks 파일)를 원격 기기에 직접 설치할 수 있습니다.
  • 고급 디버깅: DDP는 중요한 시스템 로그 및 디버깅 정보(예: dumpsys 및 bugreport)를 개발자에게 직접 노출합니다.

확장성이 뛰어난 기기 카탈로그

DDP는 Test Lab의 엄격하고 무거운 환경 카탈로그를 완전히 재설계된 기기 카탈로그 API로 대체합니다.

  • 서버 측 필터링: 개발자가 서버 측에서 기기를 필터링할 수 있도록 하여 쿼리 속도를 높이고 페이로드 지연 시간을 줄입니다.
  • _실시간 가용성 데이터_: DDP는 실시간 기기 가용성 정보를 기기 실행에 직접 제공하므로 가용성이 높은 기기를 선택하고 긴 대기열 시간을 피할 수 있습니다. 이는 Test Lab에는 완전히 없는 기능입니다.

마이그레이션 경로 선택

AI로 마이그레이션 자동화

이 전환을 원활하게 진행할 수 있도록 전용 번역 에이전트 기술인: migrating-device-run 을 개발했습니다.

Antigravity, Claude Code, Codex와 같은 AI 코딩 에이전트를 사용하는 경우 맞춤 테스트 스크립트를 쉽게 번역할 수 있습니다. 마이그레이션 기술 스키마의 URL을 복사하여 여기에 설명된 대로 AI 어시스턴트 작업공간에 붙여넣기만 하면 됩니다.

마이그레이션 프롬프트 템플릿

You are an expert migration assistant. I want to migrate my test command and
configuration to the new `gcloud beta device-run` command format.

Use this migration guideline as your ruleset:
https://docs.cloud.google.com/developer-device-platform/device-run/migrate/migration-skill.md.txt

Translate the following command and configuration to the new `gcloud beta
device-run` CLI: (Insert your raw Firebase Test / Flank YAML or bash script
here.)

수동으로 마이그레이션

명령어 및 플래그 번역에 따라 Firebase Test Lab에서 DDP로 수동으로 마이그레이션합니다. 마이그레이션을 준비할 때 다음과 같은 구조적 차이점에 유의하세요.

  • 리소스 중심 CLI 아키텍처: gcloud beta device-run은 세 가지 기본 리소스 그룹에서 최신 <resource> <verb> 명령어 패턴을 채택합니다.
    • devices: 기기 카탈로그 인벤토리 및 포괄적인 기기 세부정보에 대한 직접 CLI 액세스 권한을 제공하여 조각화된 기존 firebase test android/ios models/versions/locales 명령어를 대체합니다.
    • software-versions: 지원되는 소프트웨어 버전(예: Xcode 및 Android Test Orchestrator 버전)에 대한 직접 CLI 액세스 권한을 제공하여 기존 firebase test ios xcode-versions list를 대체합니다.
    • sessions: sessions submit instrumentation, sessions submit xctest, sessions wait, sessions describe [--full], sessions list, sessions cancel을 비롯한 터미널에서 직접 엔드 투 엔드 세션 수명 주기 관리
  • 하위 명령어 구조: 테스트 유형은 유형 플래그를 사용하는 대신 sessions submit 아래에 클린 하위 명령어로 표준화되고 중첩됩니다.
    • DDP: gcloud beta device-run sessions submit instrumentation (Android) 또는 gcloud alpha device-run sessions submit xctest (iOS)
    • Test Lab: gcloud firebase test android run --type=instrumentation(Android) 또는 gcloud firebase test ios run --type=xctest (iOS)
  • 복수형 및 병합된 앱: 표준 및 보조 APK는 복수형 --apps 플래그 목록 (예: --apps=app.apk,helper.apk) 아래에 병합됩니다.--app--additional-apks
  • 구조화된 딕셔너리 및 목록 인수: 쉼표로 구분된 파일 또는 환경 목록을 구조화된 CLI 딕셔너리 및 목록 형식으로 대체했습니다. --other-files-to-push KEY=VALUE, --additional-test-options KEY=VALUE, --paths-to-pull, --test-targets
  • 통합된 샤딩 및 재시도 제어: 균일한 샤딩 및 스마트 샤딩을 병렬 재시도 (--flaky-test-parallel-retry, --flaky-test-retry-level) 및 런타임 진단 (--dumpsys, --bugreport, --video)과 함께 원활하게 지원합니다.
  • 비동기 실행: gcloud beta device-run은 비동기 실행을 지원하므로 완료될 때까지 기다리지 않고 테스트를 실행할 수 있습니다. gcloud beta device-run sessions wait <SESSION_ID>를 사용하여 완료를 기다립니다.
  • 선언적 YAML 구성 (--flags-file): 버전 관리된 YAML 파일을 셸 스크립트 문자열보다 선호하는 Flank에서 마이그레이션하는 팀은 gcloud's 범용 --flags-file=device-run-flags.yaml 지원을 사용할 수 있습니다.

다음 단계

  1. 빠른 시작을 사용하여 개발자 기기 플랫폼을 설정합니다.
  2. 기기 카탈로그를 탐색하여 사용 가능한 모든 기기를 찾습니다.
  3. 기기 실행에 대해 알아보고 테스트를 시작합니다.
  4. 명령어 및 플래그 번역을 방문하여 Test Lab 및 Flank 플래그를 DDP에 매핑합니다.