gcloud
firebase test CLI가 개선된 Developer Device Platform (DDP)의 gcloud beta device-run 명령줄 인터페이스 미리보기를 발표하게 되어 기쁩니다.
gcloud beta device-run CLI는 실제 기기와 가상 기기 모두에서 기기 내 자동화 및 계측 테스트 실행을 간소화하고 현대화합니다. 미리보기 출시에서는 Android Instrumentation 및 iOS XCTest가 지원됩니다. 안내는 기기 실행 개요를 참고하세요.
개요 및 이점
Firebase Test Lab에서 개발자 기기 플랫폼 (DDP)으로 전환하면 특히 비용 절감, 테스트 실행 속도, 고급 디버깅, AI 기반 워크플로의 내장 지원 측면에서 여러 가지 주요 이점이 있습니다.
클라우드에서 모바일 테스트를 실행하는 개발자는 다양한 구성 모델 (Firebase Test Lab) 사이에서 저글링하거나 추가 파이프라인 및 도구 래퍼 레이어 (Flank)를 유지해야 합니다.
개발자 기기 플랫폼의 gcloud beta device-run CLI는 이러한 기능을 핵심 Google Cloud CLI에 직접 병합합니다. 실제 기기와 가상 기기 모두에서 예측 가능하고 효율적으로 테스트를 실행하는 더 강력하고 선언적이며 확장 가능한 백엔드 인터페이스를 제공합니다.
DDP가 Firebase Test Lab보다 우수한 플랫폼이 되도록 하는 주요 기능은 다음과 같습니다.
Advanced Smart Sharding
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시간으로 늘립니다.
- 여러 조정자: 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
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 beta device-run sessions submit xctest(iOS) - Test Lab:
gcloud firebase test android run --type=instrumentation(Android) 또는gcloud firebase test ios run --type=xctest(iOS)
- DDP:
- 복수화되고 병합된 앱: 표준 및 보조 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): Flank에서 이전하는 팀 중 셸 스크립트 문자열보다 버전 관리 YAML 파일을 선호하는 팀은gcloud의 범용--flags-file=device-run-flags.yaml지원을 사용할 수 있습니다.
다음 단계
- 빠른 시작을 사용하여 개발자 기기 플랫폼을 설정하세요.
- 기기 카탈로그에서 사용 가능한 모든 기기를 확인하세요.
- 기기 실행에 대해 알아보고 테스트를 시작하세요.
- 명령어 및 플래그 번역을 방문하여 Test Lab 및 Flank 플래그와 DDP의 매핑을 확인하세요.