선택한 기기 및 구성에 대한 테스트 또는 테스트 사례 조합을 실행하면 Test Lab에서 앱에 대한 테스트를 일괄적으로 실행한 후 그 결과를 테스트 매트릭스에 표시합니다.
기기 × 테스트 실행 = 테스트 매트릭스
기기
테스트를 실행하는 실제 또는 가상 기기(Android만 해당)는 스마트폰, 태블릿 또는 웨어러블 기기 등입니다. 테스트 매트릭스의 기기는 기기 모델, OS 버전, 화면 방향, 언어(지역 및 언어 설정이라고도 함)를 기준으로 구분됩니다.
테스트, 테스트 실행
기기에서 테스트(또는 테스트 사례 조합)를 실행합니다. 테스트를 기기당 하나씩 실행하거나 원하는 경우 테스트를 샤딩하여 다양한 기기에서 테스트 사례를 실행할 수도 있습니다.
테스트 매트릭스
테스트 실행의 상태 및 테스트 결과를 포함합니다. 매트릭스에 포함된 테스트 실행이 한 개라도 실패하면 전체 매트릭스가 실패로 표시됩니다.
1단계: Test Lab에 업로드할 테스트 준비
Test Lab으로 실행할 수 있는 테스트는 다음과 같습니다. 모든 테스트 유형은 실제 기기에서 최대 45분 동안 실행할 수 있으며 포착되지 않은 예외는 테스트 실패 원인입니다.
XCTest(XCUITest 포함): XCTest 프레임워크를 사용하여 작성한 단위 테스트입니다.
Test Lab으로 실행할 XCTest를 수정하는 방법은 XCTest 만들기를 참조하세요.
게임 루프 테스트: 게임 앱에서 '데모 모드'를 사용하여 플레이어 동작을 시뮬레이션하는 테스트입니다. 게임 루프 테스트는 사용 시 게임이 정상적으로 작동하는지 확인할 수 있는 빠르고 확장 가능한 방법을 제공합니다. 게임 루프 테스트를 실행하면 다음과 같은 작업이 가능합니다.
게임 엔진 고유의 테스트를 작성합니다.
UI 또는 테스트 프레임워크마다 다른 코드를 작성합니다.
원하는 경우 단일 테스트로 실행할 여러 개의 루프를 만듭니다. 라벨을 사용하여 루프를 정리하면 루프를 추적하고 특정 루프를 다시 실행할 수도 있습니다.
Google은 앱 데이터의 보안을 위해 최선을 다하고 있습니다. Google은 업계 표준 권장사항에 따라 테스트 실행이 끝날 때마다 실제 기기에서 앱 데이터를 삭제하고 시스템 설정을 재설정하여 새 테스트를 실행할 수 있도록 준비합니다. 기기를 커스텀 복구 이미지로 플래시할 수 있는 경우
테스트 실행 사이에 기기를 플래시하는 단계도 진행합니다.
Test Lab에 사용되는 가상 기기의 인스턴스는 사용 후 삭제되므로 테스트를 실행할 때마다 새 가상 기기 인스턴스가 사용됩니다.
Test Lab 기기에서 비공개 백엔드 서버에 액세스하도록 허용
일부 모바일 앱은 테스트 중에 올바르게 작동하기 위해 비공개 백엔드 서비스와 통신해야 합니다. 백엔드 서버가 방화벽 규칙에 의해 보호되는 경우 아래 IP 주소 블록을 사용하여 방화벽을 통해 경로를 열면 Test Lab의 실제 및 가상 기기에 대한 액세스를 허용할 수 있습니다.
모바일 광고
Test Lab은 앱 테스트를 자동화하는 확장 가능한 인프라를 제공하지만 안타깝게도 사기성 광고 수익을 창출하도록 설계된 악성 앱에 의해 이 기능이 악용될 수 있습니다.
이러한 문제를 방지하는 대책은 다음과 같습니다.
타사 디지털 광고 제공업체(예: 광고 네트워크 또는 수요측 플랫폼)를 이용하거나 이러한 업체와 협력하는 경우 앱 개발 및 테스트 중에 실제 광고가 아닌 테스트 광고를 사용하는 것이 좋습니다.
테스트에 실제 광고를 사용해야 하는 경우 아래의 IP 주소 블록을 사용해 Test Lab에서 발생하는 수익과 모든 해당 트래픽을 필터링하도록 협력하는 디지털 광고 제공업체에 통보합니다. Google에서 소유한 광고 제공업체에는 알릴 필요가 없으며 Test Lab이 알아서 처리해 줍니다.
Test Lab 기기에서 사용하는 IP 주소
Test Lab 기기에서 발생하는 모든 네트워크 트래픽은 다음 IP 주소 블록에서 시작됩니다.
gcloud CLI에서 gcloud beta firebase test ip-blocks list명령어를 사용하여 이 목록에 액세스할 수도 있습니다. 목록은 평균 1년에 한 번 업데이트됩니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[],[],null,["\u003cbr /\u003e\n\nFirebase Test Lab lets you quality test your app on a range of devices and\nconfigurations. This guide provides an overview of Test Lab's key concepts,\niOS offerings, and instructions on how to start testing.\n\nFor information about Test Lab quotas and pricing plans, see\n[Usage, Quotas, and Pricing](../usage-quotas-pricing).\n\nKey concepts and terms\n\nWhen you run a test or a set of test cases against devices and configurations\nyou've selected, Test Lab runs the test against your app in a batch, then\ndisplays the results as a **test matrix**.\n\n**Devices × Test Executions = Test Matrix**\n\nDevice\n: A physical or virtual device (Android only) you run a test on, such as a\n phone, tablet, or wearable device. Devices in a test matrix are identified by\n device model, OS version, screen orientation, and locale (also known as\n geography and language settings).\n\nTest, test execution\n: A test (or a set of test cases) to be run on a device. You can run one test\n per device, or optionally shard the test and run its test cases on\n different devices.\n\nTest matrix\n: Contains the statuses and test results for your test executions. If any\n test execution in a matrix fails, the whole matrix fails.\n\n*** ** * ** ***\n\n**Step 1** : Prepare your test for uploading to Test Lab\n\nYou can run the following tests with Test Lab. Note that all test types can\nrun up to a maximum of 45 minutes on physical devices, and any uncaught\nexception will cause a test failure.\n\n- **XCTest (including XCUITests)** : A unit test you've written using the\n [XCTest framework](https://developer.apple.com/documentation/xctest).\n Visit [Create an XCTest](/docs/test-lab/ios/run-xctest) for instructions on modifying an\n XCTest to run with Test Lab.\n\n- **Game Loop test**: A test that uses a \"demo mode\" to\n simulate player actions in gaming apps. This is a fast and scalable way\n to verify that your game performs well for users. When you choose to run a\n Game Loop test, you can:\n\n - Write tests native to your game engine.\n\n - Avoid writing the same code for different UIs or testing\n frameworks.\n\n - Optionally create multiple loops to run in a single test execution. You\n can also organize loops by using labels so you can keep track of them and\n re-run specific loops.\n\n Visit [Run a Game Loop test](/docs/test-lab/ios/run-game-loop-test) for instructions on how to\n run your test in Test Lab.\n\n**Step 2**: Choose a tool to run your test\n\nYou can choose the following tools to run your test with:\n\n- The **Firebase console** lets you upload an\n app and initiate testing from anywhere. See\n [Test with the Firebase console](/docs/test-lab/ios/firebase-console)\n for instructions on using this tool.\n\n- The **gcloud command line interface (CLI)** enables you to run tests\n from the command line interactively, and is also well suited for scripting as\n part of your automated build and testing process. See [Test with the gcloud CLI](/docs/test-lab/ios/command-line)\n for instructions on using this tool.\n\n- Before testing on real devices, run your test **locally on a simulator** to\n make sure it behaves as intended. See\n [Test locally](/docs/test-lab/ios/test-locally) for instructions.\n\n**Step 3**: Specify testing devices\n\nWith Test Lab, you can run your test against your app on a wide range of iOS\ndevices and models hosted in a Google data center. To learn more, see\n[Available devices.](/docs/test-lab/ios/available-testing-devices)\n\n**Step 4**: Review test results\n\nRegardless of how you initiate your tests, all your test results are managed by\nTest Lab and can be viewed online.\n\nThe **test result summary** is\nautomatically stored and can be viewed in the Firebase console. It contains\nthe most relevant data for your test, including test case-specific videos,\nscreenshots, the number of tests that passed, failed, or got flaky results, and\nmore.\n\nThe **raw test results** contain test logs and app failure details, and is\nautomatically stored in a Google Cloud bucket. If you specify a bucket, you are\nresponsible for the cost of the storage. If you don't specify a bucket,\nTest Lab creates one for you at no cost.\n\nFor more details, see\n[Analyze Firebase Test Lab Results.](/docs/test-lab/analyzing-results)\n\nDevice cleanup\n\nGoogle takes the security of your app data very seriously. We follow\nindustry-standard best practices to remove app data and reset system settings\nfor physical devices after every test run to ensure that they are\nready to run new tests. For devices that we can flash with a custom recovery\nimage, we go one step further by flashing these devices between test runs.\n\nFor the virtual devices used by Test Lab, device instances are deleted after\nthey are used so that each test run uses a new virtual device instance.\n\n*** ** * ** ***\n\nAllowing Test Lab devices to access private backend servers\n\nSome mobile apps need to communicate with private backend services to function\ncorrectly during testing. If your backend servers are protected by firewall\nrules, you can allow access for Test Lab's physical and virtual devices by\nusing the [IP address blocks below](#ip-blocks) to open routes through your\nfirewall.\n\nMobile advertising\n\nTest Lab provides a scalable infrastructure that automates app testing, and\nunfortunately, this capability can be misused by malicious apps designed to\ngenerate fraudulent ad revenue.\n\nTo mitigate this issue:\n\n- If you use or work with third-party digital advertising providers\n (for example, ad networks or demand-side platforms),\n you're recommended to use test ads rather than real ads during app development\n and testing.\n\n- If you must use real ads in your test, notify the digital advertising\n providers you work with to filter out revenues and all corresponding traffic\n generated from Test Lab by using the\n [IP address blocks below](#ip-blocks). You don't need\n to notify Google-owned ad providers; Test Lab takes care of that for you.\n\nIP addresses used by Test Lab devices\n\nAll network traffic generated by Test Lab devices originates from the\nfollowing\n[IP address blocks](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation).\nYou can also access this list by using the\n`gcloud beta firebase test ip-blocks list`\n[command](https://cloud.google.com/sdk/gcloud/reference/beta/firebase/test/ip-blocks/list)\nin the [gcloud](https://cloud.google.com/sdk/gcloud) CLI. The list is updated on\naverage once a year.\n\n| Platform and device type | CIDR IP address block |\n|-------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Android and iOS physical devices, Arm virtual devices | 70.32.128.0/19 (added 02-2022) 108.177.6.0/23 108.177.18.192/26 (added 02-2022) 108.177.29.64/27 (expanded 02-2022) 108.177.31.160/27 (added 02-2022) 199.36.156.8/29 (added 02-2022) 199.36.156.16/28 (added 02-2022) 209.85.131.0/27 (added 02-2022) 2001:4860:1008::/48 (added 02-2022) 2001:4860:1018::/48 (added 02-2022) 2001:4860:1019::/48 (added 02-2022) 2001:4860:1020::/48 (added 02-2022) 2001:4860:1022::/48 (added 02-2022) 70.32.128.48/28 (added 04-2024) |\n| Android virtual devices (Non-Arm) | 34.68.194.64/29 (added 11-2019) 34.69.234.64/29 (added 11-2019) 34.73.34.72/29 (added 11-2019) 34.73.178.72/29 (added 11-2019) 34.74.10.72/29 (added 02-2022) 34.136.2.136/29 (added 02-2022) 34.136.50.136/29 (added 02-2022) 34.145.234.144/29 (added 02-2022) 35.192.160.56/29 35.196.166.80/29 35.196.169.240/29 35.203.128.0/28 35.234.176.160/28 35.243.2.0/27 (added 7-2019) 35.245.243.240/29 (added 02-2022) 199.192.115.0/30 199.192.115.8/30 199.192.115.16/29 |\n| Device IP-blocks no longer being used | 74.125.122.32/29 (removed 02-2022) 216.239.44.24/29 (removed 02-2022) |"]]