Firebase Test Lab은 Google 데이터 센터에 있는 실제 기기에서 모바일 애플리케이션을 자동으로 테스트하기 위한 Google의 클라우드 서비스입니다. Test Lab을 사용하면 자체 기기 팜을 유지할 필요 없이 Android 및 iOS의 다양한 버전이 설치된 수백 가지 기기 구성에서 계측 테스트, 스크린샷 테스트 및 로봇 테스트를 실행할 수 있습니다. Firebase Documentation, 2026에 따르면, Firebase 로봇 테스트는 애플리케이션의 모든 화면을 자동으로 탐색하여 테스트 코드 한 줄 없이 충돌, ANR 및 UI 문제를 감지합니다. 이 서비스는 CI/CD 시스템과의 통합을 지원하며 비디오 및 로그가 포함된 상세한 보고서를 제공합니다.
핵심 사항
Firebase Test Lab은 Google의 글로벌 데이터 센터에 있는 물리적 기기에서 모바일 애플리케이션을 자동으로 테스트하기 위한 Google의 클라우드 인프라입니다. 로컬 머신의 에뮬레이터와 달리 Test Lab은 다양한 운영 체제 버전, 화면 해상도, RAM 크기 및 API 수준을 가진 실제 Android 기기 및 iOS 기기에서 테스트를 실행합니다. 이 서비스는 테스트 결과를 자동으로 처리하여 실행 비디오, 단계별 스크린샷 및 상세한 로그를 제공합니다.
자체 기기 팜을 유지 관리하려면 물리적 기기 구매 및 유지 관리에 상당한 자본 지출이 필요합니다. Firebase Test Lab은 Spark 플랜의 무료 한도 내에서 종량제 방식으로 수천 대의 기기에 대한 액세스를 제공합니다. Test Lab은 최신 Google Pixel, Samsung Galaxy, Xiaomi 및 iPhone 플래그십을 포함하여 기기 풀을 최신 모델로 자동 업데이트합니다. 테스트는 여러 기기에서 병렬로 실행되어 애플리케이션 검증의 총 시간을 단축합니다.
Android의 경우 Test Lab은 API 레벨 21부터 최신 안정적인 Android 버전까지의 기기에서 테스트를 지원합니다. iOS 지원에는 iOS 15부터 최신 안정 버전까지의 실제 iPhone 및 iPad 기기가 포함됩니다. iOS에서는 로봇 테스트 및 XCTest를 사용할 수 있습니다. 각 테스트는 물리적 기기 또는 에뮬레이터에서 실행할 수 있습니다. 가장 정확한 결과를 위해 Google은 물리적 기기 사용을 권장합니다. 물리적 기기는 센서, 카메라 및 네트워크 인터페이스 관련 문제를 드러내기 때문입니다.
Firebase Test Lab은 여러 테스트 유형을 지원하며, 각각 개발 주기에서 고유한 작업을 수행합니다: 빠른 안정성 확인을 위한 로봇 테스트, 기능 검증을 위한 계측 테스트, 시각적 회귀를 감지하기 위한 스크린샷 테스트입니다. 테스트 유형의 선택은 개발 단계와 특정 실행의 목표에 따라 달라집니다.
로봇 테스트는 테스트 코드를 작성할 필요가 없는 Firebase Test Lab의 고유한 기능입니다. Firebase Crawler가 애플리케이션을 자동으로 탐색하여 모든 대화형 UI 요소를 찾고, 클릭하고, 테스트 데이터로 양식을 작성하고, 화면 간을 이동하며, 모든 장애(충돌, ANR, 예외)를 기록합니다. 로봇 테스트는 테스트 코드 한 줄 없이 최대 80%의 치명적인 버그를 감지하여 개발 초기 단계에서 애플리케이션의 기본 안정성을 평가하기 위한 이상적인 도구입니다.
계측 테스트는 개발자가 Espresso(Android) 또는 XCTest(iOS) 프레임워크를 사용하여 작성하는 테스트입니다. Test Lab은 테스트가 포함된 APK를 대상 기기에서 실행하고 실행 결과를 수집합니다. 테스트는 단순(요소 표시 확인)하거나 복잡(엔드투엔드 시나리오: 로그인, 장바구니에 추가, 결제)할 수 있습니다. Firebase Test Lab은 Android Test Orchestrator를 지원하여 테스트를 서로 격리함으로써 하나의 테스트 실패가 다른 테스트에 영향을 미치는 것을 방지합니다.
스크린샷 테스트는 애플리케이션의 시각적 회귀를 감지하는 데 사용됩니다. Game loop는 인텐트를 통해 애플리케이션에 시나리오 목록을 전달하는 특수 테스트 유형으로, 애플리케이션은 이러한 시나리오를 실행하고 주요 화면의 스크린샷을 찍어야 합니다. Test Lab은 매트릭스의 모든 기기에서 스크린샷을 수집하고 참조 이미지와 비교하여 차이점을 감지할 수 있습니다. 이 테스트 유형은 다양한 GPU에서의 렌더링을 확인하기 위해 게임 애플리케이션에서 특히 인기가 있습니다.
| 테스트 유형 | 코드 | 확인 내용 | 사용 시기 |
|---|---|---|---|
| 로봇 테스트 | 필요 없음 | 충돌, ANR, 예외 | 빠른 안정성 확인 |
| 계측 | Espresso / XCTest | 시나리오 기능 | 회귀 테스트 |
| 스크린샷 테스트 | Game loop | 시각적 회귀 | 다양한 기기에서 UI 확인 |
테스트 매트릭스는 Firebase Test Lab에서 선택된 테스트가 실행되는 기기 구성의 집합입니다. 각 구성에는 기기 모델, OS 버전, 화면 방향(세로/가로) 및 지역 설정(로케일, 언어)이 포함됩니다. 테스트는 선택된 모든 구성에서 병렬로 실행되어 각 기기에서 순차적으로 실행하는 것에 비해 총 실행 시간을 크게 단축합니다.
Google은 다양한 특성을 가진 기기를 매트릭스에 포함할 것을 권장합니다: 플래그십 모델(Google Pixel, Samsung Galaxy S), 보급형 기기(Moto G, Xiaomi Redmi), 애플리케이션이 지원하는 최소 API 버전의 기기입니다. 최적의 매트릭스에는 애플리케이션이 지원하는 모든 OS 버전을涵盖하는 5~10개의 구성이 포함됩니다. iOS의 경우 다양한 iOS 버전을 가진 서로 다른 세대의 iPhone 및 iPad 모델(예: iPhone SE, iPhone 14, iPad Air)이 선택됩니다.
Test Lab은 선택된 기기에 자동으로 테스트를 분산하여 각 구성에서 각 테스트를 실행합니다. 전체 매트릭스의 실행 시간은 가장 느린 기기에서 가장 느린 테스트의 실행 시간과 같으며, 나머지는 모두 병렬로 실행됩니다. 하나의 테스트가 모든 기기에서 실패하면 Test Lab은 리소스를 절약하기 위해 나머지 구성에서 실행을 중지합니다. 결과는 테스트별 및 기기별로 그룹화되어 오류가 특정 구성에 특정한 것인지 빠르게 식별할 수 있습니다.
로봇 테스트는 Firebase Test Lab의 플래그십 기능으로, 단 하나의 테스트도 작성하지 않고 애플리케이션을 자동으로 탐색할 수 있습니다. Firebase Crawler(로봇)는 애플리케이션의 UI 계층 구조를 분석하고 모든 대화형 요소(버튼, 텍스트 필드, 목록, 메뉴)를 찾아 실제 사용자 행동을 시뮬레이션하면서 상호 작용합니다. 로봇 테스트는 테스트가 아직 작성되지 않은 개발 초기 단계에서 특히 효과적이며, 레거시 코드를 확인하는 데도 유용합니다.
로봇 테스트를 실행하려면 Firebase Console에 APK 또는 IPA를 업로드하고 Robo test 옵션을 선택하기만 하면 됩니다. 로봇은 미리 구성된 자격 증명(로그인/비밀번호)을 통해 자동으로 애플리케이션에 로그인하여 인증 뒤에 숨겨진 화면에 액세스할 수 있습니다. 또한 탐색 깊이(max depth)를 설정하여 로봇 단계 수를 제한하거나 로봇이 우선적으로 클릭해야 하는 특정 요소를 지정할 수 있습니다.
<!-- res/xml/robo_directives.xml -->
<!-- 로봇이 로그인 및 비밀번호 필드를 채웁니다 -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
로봇 테스트는 복잡한 시나리오에 대한 수동 테스트 및 작성된 계측 테스트를 대체하지 않습니다. 로봇은 비즈니스 로직을 확인할 수 없습니다: 모든 요소를 순서대로 클릭하지만 결과가 올바른지 알지 못합니다. 또한 로봇은 표준 ViewGroup에서 상속되지 않은 사용자 정의 뷰와 상호 작용할 수 없으며 WebView를 처리하지 못합니다. 이러한 경우에는 계측 테스트 또는 Game loop를 사용해야 합니다.
Firebase Test Lab과 CI/CD 시스템의 통합을 통해 리포지토리에 푸시할 때마다 자동으로 테스트를 실행할 수 있습니다. Test Lab은 Android용 Gradle 작업과 두 플랫폼 모두를 위한 Fastlane을 지원합니다. CI/CD 파이프라인 설정에는 애플리케이션 빌드, Google Cloud Storage에 APK/IPA 업로드, Firebase CLI를 통한 테스트 실행, 빌드 상태 표시를 위한 CI 시스템으로의 보고서 반환이 포함됩니다.
Google은 Gradle용 gcloud-test-lab 플러그인을 제공하여 테스트 업로드 및 실행을 자동화합니다. assembleAndroidTest 작업은 테스트가 포함된 APK를 빌드하고 gcloud 작업이 Test Lab에 업로드하여 매트릭스를 실행합니다. 테스트 결과는 pass/fail로 Gradle에 반환되어 Gradle을 지원하는 모든 CI 파이프라인에 Test Lab을 통합할 수 있습니다. 인증을 위해 Test Lab 권한이 있는 Firebase 서비스 계정이 사용됩니다.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane은 iOS 및 Android 테스트와의 통합을 위한 firebase_test_lab 플러그인을 제공합니다. Fastlane 레인은 빌드를 수행하고 테스트를 실행하며 결과를 처리합니다. iOS XCTest의 경우 Test Lab은 xctestrun 파일이 필요하며, 이 파일은 테스트 대상을 빌드할 때 자동으로 생성됩니다. Fastlane은 각 실행 후 테스트 상태에 대해 팀에 알리기 위해 테스트 결과를 Slack 또는 다른 메신저에 업로드할 수도 있습니다.
테스트 완료 후 Firebase Test Lab은 Firebase Console 및 gcloud CLI를 통해 사용할 수 있는 포괄적인 보고서를 제공합니다. 보고서에는 간단한 요약(통과, 실패 및 건너뛴 테스트 수), 각 기기의 각 테스트에 대한 자세한 정보, 실행 비디오, 주요 단계의 스크린샷 및 기기 로그(Android의 logcat, iOS의 시스템 로그)가 포함됩니다. 실패한 테스트의 경우 정확한 오류 위치가 포함된 스택 추적을 사용할 수 있습니다.
로봇 테스트의 경우 보고서는 계측 테스트와 다릅니다: 테스트 케이스별 통과/실패 대신 보고서는 탐색 통계를 표시합니다. 주요 지표 — 발견 및 방문한 화면 수, 로봇 상호 작용 수(클릭, 스와이프, 텍스트 입력), 감지된 충돌 및 ANR, 애플리케이션을 통해 이동한 경로입니다. 로봇 실행 비디오를 통해 어떤 화면이 테스트되었고 어떤 화면이 테스트되지 않았는지 시각적으로 평가할 수 있습니다.
테스트 결과는 프로젝트와 연결된 버킷의 Google Cloud Storage에 저장됩니다. 데이터는 외부 분석 시스템으로 내보내고 통합하는 데 사용할 수 있습니다. 실행 간의 장기 저장 및 결과 비교를 위해 BigQuery 내보내기를 설정하거나 프로그래밍 방식으로 결과를 검색하기 위해 Firebase Test Lab API를 사용하는 것이 좋습니다. Google은 각 테스트 실행에 대한 전체 결과 세트가 포함된 ZIP 아카이브를 다운로드하는 기능을 제공합니다.
자주 묻는 질문
Spark 플랜에는 하루 10회의 Robo 테스트와 월 5시간의 계측 테스트가 무료로 포함됩니다. Blaze 플랜은 시간당 요금이 부과됩니다: Robo 테스트의 경우 ~1 USD/기기-시간, 계측 테스트의 경우 ~5 USD입니다. 정확한 비용은 지역과 기기 유형에 따라 다릅니다.
물리적 기기는 센서, 카메라, GPS, 블루투스 및 실제 성능 문제를 포함한 더 정확한 결과를 제공합니다. 에뮬레이터는 더 빠르게 시작되고 저렴하지만 하드웨어 기능과 관련된 문제를 드러내지 않습니다. Google은 출시 전 테스트에 물리적 기기를 권장합니다.
입력 필드(로그인, 비밀번호)와 클릭할 버튼이 포함된 XML 파일 robo_directives.xml을 만듭니다. Firebase Console 또는 CLI를 통해 테스트를 시작할 때 APK와 함께 파일을 업로드합니다. 로봇은 탐색을 시작하기 전에 지정된 작업을 수행합니다.
네, Firebase Test Lab은 2024년부터 iOS를 지원합니다. 실제 iPhone 및 iPad 기기에서 Robo 테스트(자동 탐색) 및 XCTest(계측 테스트)를 사용할 수 있습니다. 업로드하려면 테스트 대상이 포함된 IPA 파일이 필요합니다.
GitHub Actions에서 Firebase CLI를 사용합니다: Service Account JSON을 통해 인증을 설정하고, gcloud SDK를 설치하고, APK 및 구성과 함께 firebase test android run 명령을 실행합니다. 테스트 결과는 Firebase Console 또는 gcloud CLI를 통해 확인할 수 있습니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.