Firebase Test Lab으로 Android 테스트 시작하기

Firebase Test Lab을 사용하면 다양한 기기와 구성에서 앱을 테스트할 수 있습니다. 이 시작 가이드는 사용자가 따라야 할 구현 경로를 제공하고 Test Lab의 Android 지원을 소개합니다.

Test Lab 할당량 및 요금제에 대한 자세한 내용은 사용량, 할당량, 가격 책정을 참조하세요.

주요 개념

선택한 기기 및 구성에 대한 테스트 또는 테스트 사례 조합을 실행하면 Test Lab에서 앱에 대한 테스트를 일괄적으로 실행한 후 그 결과를 테스트 매트릭스에 표시합니다.

기기 × 테스트 실행 = 테스트 매트릭스

기기
테스트를 실행하는 실제 또는 가상 기기(Android만 해당)는 스마트폰, 태블릿 또는 웨어러블 기기 등입니다. 테스트 매트릭스의 기기는 기기 모델, OS 버전, 화면 방향, 언어(지역 및 언어 설정이라고도 함)를 기준으로 구분됩니다.
테스트, 테스트 실행
기기에서 테스트(또는 테스트 사례 조합)를 실행합니다. 테스트를 기기당 하나씩 실행하거나 원하는 경우 테스트를 샤딩하여 다양한 기기에서 테스트 사례를 실행할 수도 있습니다.
테스트 매트릭스
테스트 실행의 상태 및 테스트 결과를 포함합니다. 매트릭스에 포함된 테스트 실행이 한 개라도 실패하면 전체 매트릭스가 실패로 표시됩니다.

1단계: Test Lab에 업로드할 테스트 준비

사용 가능한 테스트 유형

Test Lab으로 실행할 수 있는 테스트는 다음과 같습니다. 모든 테스트 유형의 실행은 실제 기기에서 45분, 가상 기기에서 60분으로 제한됩니다. 포착되지 않은 예외는 테스트 실패 원인입니다.

  • 계측 테스트 또는 계측 단위 테스트: Espresso 또는 UI Automator 프레임워크를 사용하여 작성하는 테스트입니다. 이 테스트에서는 AndroidJUnitRunnerAPI를 사용하여 올바른 작동을 확인함으로써 앱 상태에 대한 명시적 어설션이 가능합니다.

  • Robo 테스트: 코드를 작성하지 않고도 앱 UI를 분석한 후 사용자 활동을 시뮬레이션하여 체계적으로 탐색하는 자동화 테스트입니다. 자세한 내용은 Robo 테스트 정보를 참조하세요.

  • 게임 루프 테스트: 게임 앱에서 '데모 모드'를 사용하여 플레이어 동작을 시뮬레이션하는 테스트입니다. 게임 루프 테스트는 사용 시 게임이 정상적으로 작동하는지 확인할 수 있는 빠르고 확장 가능한 방법을 제공합니다. 게임 루프 테스트를 실행하면 다음과 같은 작업이 가능합니다.

    • 게임 엔진 고유의 테스트를 작성합니다.

    • UI 또는 테스트 프레임워크마다 다른 코드를 작성합니다.

    • 원하는 경우 단일 테스트 실행으로 실행할 여러 개의 루프를 만듭니다(자세한 내용은 게임 루프 테스트 정보 참조). 라벨을 사용하여 루프를 정리하면 루프를 추적하고 특정 루프를 다시 실행할 수도 있습니다.

    Test Lab으로 이 테스트를 실행하는 방법은 게임 루프 테스트 실행을 참조하세요.

테스트 실행 도구

다음 도구를 사용하여 테스트를 실행할 수 있습니다.

  • 처음 사용하는 경우 권장: Firebase Console을 사용하면 웹브라우저에서 앱을 업로드하여 테스트를 시작할 수 있습니다. 이 도구를 사용하여 테스트를 실행하는 방법은 Firebase Console에서 테스트를 참조하세요.

  • Android 스튜디오 통합을 사용하면 개발 환경에서 나가지 않고도 앱을 테스트할 수 있습니다. 이 도구를 사용하여 테스트를 실행하는 방법은 Android 스튜디오에서 테스트를 참조하세요.

  • gcloud 명령줄 인터페이스를 사용하면 명령줄에서 대화식으로 테스트를 실행할 수 있으며, 이 방법은 스크립트를 작성하여 자동화 빌드 및 테스트 프로세스에 포함하기에 적합합니다. 이 도구를 사용하여 테스트를 실행하는 방법은 gcloud CLI에서 테스트를 참조하세요.

알파 또는 베타 채널을 사용하여 앱의 APK 파일을 Play 스토어에 업로드하고 게시할 때 Test Lab을 사용하면 무료로 앱을 테스트할 수도 있습니다. 자세한 내용은 사전 출시 보고서를 통해 문제 확인하기Robo 테스트를 참조하세요.

2단계: 테스트 기기 선택

Test Lab은 Google 데이터 센터에 설치되어 실행되는 다양한 제조사의 여러 Android 기기 모델을 대상으로 테스트를 지원합니다. Test Lab에서 기기를 테스트하면 Android 스튜디오에서 에뮬레이터로 앱을 테스트할 때는 발생하지 않는 여러 가지 문제점을 발견할 수 있습니다. 자세한 내용은 사용 가능한 기기를 참조하세요.

3단계: 테스트 결과 검토

테스트 시작 방법에 관계없이 모든 테스트 결과는 Test Lab에서 관리되며 온라인으로 조회할 수 있습니다.

테스트 결과 요약이 자동으로 저장되며 Firebase Console에서 확인할 수 있습니다. 테스트 사례별 동영상, 스크린샷, 통과/실패했거나 결과를 신뢰할 수 없는 테스트 수 등 가장 관련성 높은 테스트 데이터가 테스트 결과 요약에 포함됩니다.

원시 테스트 결과는 테스트 로그 및 앱 오류 세부정보를 포함하며 Google Cloud 버킷에 자동으로 저장됩니다. 버킷을 지정할 경우 스토리지 비용을 지불해야 합니다. 버킷을 지정하지 않으면 Test Lab에서 무료로 버킷을 만듭니다.

자세한 내용은 Firebase Test Lab 결과 분석을 참조하세요.

Android 스튜디오에서 테스트를 시작한 경우 개발 환경 내에서도 테스트 결과를 검토할 수 있습니다.

기기 정리

Google은 앱 데이터의 보안을 위해 최선을 다하고 있습니다. Google은 업계 표준 권장사항에 따라 테스트 실행이 끝날 때마다 실제 기기에서 앱 데이터를 삭제하고 시스템 설정을 재설정하여 새 테스트를 실행할 수 있도록 준비합니다. 기기를 커스텀 복구 이미지로 플래시할 수 있는 경우 테스트 실행 사이에 기기를 플래시하는 단계도 진행합니다.

Test Lab에 사용되는 가상 기기의 인스턴스는 사용 후 삭제되므로 테스트를 실행할 때마다 새 가상 기기 인스턴스가 사용됩니다.


Test Lab 및 Google Play 서비스

Test Lab 기기는 일반적으로 최신 버전의 Google Play 서비스 SDK에서 실행되지만 새 버전의 SDK가 출시된 후 업데이트될 때까지 며칠이 걸릴 수 있습니다. 일부 기기에서는 호환성 문제가 발생할 수 있습니다.

테스트 기기에서 비공개 백엔드 서버에 액세스하도록 허용

일부 모바일 앱은 테스트 중에 올바르게 작동하기 위해 비공개 백엔드 서비스와 통신해야 합니다. 백엔드 서버가 방화벽 규칙에 의해 보호되는 경우 아래 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년에 한 번 업데이트됩니다.

플랫폼 및 기기 유형 CIDR IP 주소 블록
Android 및 iOS 실제 기기, Arm 가상 기기

70.32.128.0/19(2022-02 추가됨)

108.177.6.0/23

108.177.18.192/26(2022-02 추가됨)

108.177.29.64/27(2022-02 확장됨)

108.177.31.160/27(2022-02 추가됨)

199.36.156.8/29(2022-02 추가됨)

199.36.156.16/28(2022-02 추가됨)

209.85.131.0/27(2022-02 추가됨)

2001:4860:1008::/48(2022-02 추가됨)

2001:4860:1018::/48(2022-02 추가됨)

2001:4860:1019::/48(2022-02 추가됨)

2001:4860:1020::/48(2022-02 추가됨)

2001:4860:1022::/48(2022-02 추가됨)

Android Virtual Device(ARM이 아닌)

34.68.194.64/29(2019-11 추가됨)

34.69.234.64/29(2019-11 추가됨)

34.73.34.72/29(2019-11 추가됨)

34.73.178.72/29(2019-11 추가됨)

34.74.10.72/29(2022-02 추가됨)

34.136.2.136/29(2022-02 추가됨)

34.136.50.136/29(2022-02 추가됨)

34.145.234.144/29(2022-02 추가됨)

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(2019-7 추가됨)

35.245.243.240/29(2022-02 추가됨)

199.192.115.0/30

199.192.115.8/30

199.192.115.16/29

기기 IP 블록이 더 이상 사용되지 않음

74.125.122.32/29(2022-02 삭제됨)

216.239.44.24/29(2022-02 삭제됨)