이 페이지에서는 Firebase Test Lab을 사용한 테스트 실행과 관련하여 자주 묻는 질문에 대한 답변과 문제 해결 도움말을 제공합니다. 알려진 문제에 대해서도 문서화되어 있습니다. 원하는 내용을 찾을 수 없거나 추가 도움말이 필요하면 Firebase Slack의 #test-lab 채널에 가입하거나 Firebase 지원팀에 문의하세요.
문제 해결
테스트를 실행하는 데 시간이 오래 걸리는 이유는 무엇인가요?
Test Lab 카탈로그에서 용량 수준이 높은 기기를 선택하면 테스트가 더 빠르게 시작될 수 있습니다. 기기의 용량이 부족하면 테스트 실행 시간이 길어질 수 있습니다. 호출된 테스트의 수가 선택한 기기의 용량보다 훨씬 크면 테스트를 완료하는 데 시간이 더 오래 걸릴 수 있습니다
다음과 같은 요인으로 인해 기기 용량 수준에서 실행되는 테스트가 더 오래 걸릴 수 있습니다.
트래픽: 기기 가용성 및 테스트 속도에 영향을 미칩니다.
기기 또는 인프라 장애: 언제든지 발생할 수 있습니다. Test Lab에 대해 보고된 인프라 장애가 있는지 확인하려면 Firebase 상태 대시보드를 참조하세요.
Test Lab의 기기 용량에 관한 자세한 내용은 Android 및 iOS의 기기 용량 정보를 참고하세요.
불충분한 테스트 결과가 표시되는 이유는 무엇인가요?
불충분한 테스트 결과는 일반적으로 테스트 실행 취소 또는 인프라 오류 때문에 발생합니다.
인프라 오류는 네트워크 오류나 예상치 못한 기기 동작과 같은 Test Lab 내부 문제로 인해 발생합니다. Test Lab은 불충분한 결과를 보고하기 전에 인프라 오류를 여러 번 유발한 테스트 실행을 내부적으로 재시도하지만 failFast를 사용하여 이러한 재시도를 사용 중지할 수 있습니다.
문제가 지속되면 Firebase Slack의 #test-lab 채널에서 Test Lab팀에 문의하세요.
샤딩으로 인해 테스트가 더 오래 실행되는 이유는 무엇인가요?
지정된 샤드 수가 Test Lab에서 사용할 수 있는 기기 수를 초과할 경우 샤딩으로 인해 테스트가 더 오래 실행될 수 있습니다. 이러한 상황을 방지하려면 다른 기기로 전환해 보세요. 다른 기기 선택에 관한 자세한 내용은
기기 용량을 참조하세요.
테스트를 시작하는 데 시간이 오래 걸리는 이유는 무엇인가요?
테스트 요청을 제출하면 기기에서 테스트를 실행하기 위해 먼저 앱을 검증하고 다시 서명하는 등의 준비 과정을 거칩니다. 일반적으로 이 프로세스는 몇 초 이내에 완료되지만 앱의 크기와 같은 요소에 영향을 받을 수 있습니다.
앱이 준비되면 테스트 실행이 예약되고 기기에서 테스트를 실행할 준비가 될 때까지 큐에 남아 있습니다. 모든 테스트 실행이 완료될 때까지 매트릭스는 '대기 중' 상태가 됩니다(테스트 실행이 큐에 있는지 또는 현재 실행 중인지는 관계없음).
테스트를 완료하는 데 시간이 오래 걸리는 이유는 무엇인가요?
테스트 실행이 완료되면 기기에서 테스트 아티팩트를 다운로드하여 처리한 다음 Cloud Storage에 업로드합니다. 이 단계에 소요되는 시간은 아티팩트의 양과 크기에 영향을 받을 수 있습니다.
앱에서 데이터가 반환되지 않아 스크린샷을 찾을 수 없습니다
테스트 실행 아티팩트(예: 스크린샷, 로그 파일)는 Google Cloud Storage에 저장되고 Firebase Console에 직접 렌더링됩니다. 최근 90일 이내에 테스트 실행을 수행한 경우 프로젝트 수준 역할(프로젝트 소유자, 프로젝트 편집자 또는 프로젝트 뷰어)을 할당했는지 확인합니다.
또한 프로젝트 또는 조직에 Cloud Audit Logging이 사용 설정되어 있지 않은지 확인하세요.
90일 넘게 테스트 실행을 수행하지 않은 경우 테스트 아티팩트가 자동으로 삭제되었을 가능성이 큽니다. Test Lab 대시보드에서 테스트 결과 탭을 클릭하여 결과 버킷 구성을 확인할 수 있습니다. 기본 결과 버킷은 객체를 90일 동안 보관하도록 구성됩니다.
테스트 아티팩트를 더 오래 보관하려면 --results-bucket 플래그와 함께 gcloud firebase test android run 명령어를 실행하고 결과 버킷의 이름을 전달합니다. 자세한 내용은 gcloud firebase test android run 참조 문서를 확인하세요.
계측 테스트 사례 결과가 일부만 표시되거나 누락되는 이유는 무엇인가요?
계측 테스트를 실행할 때 Test run failed to complete. Expected
x tests, received y(y가 x보다 작은 경우)와 같은 메시지를 포함하면서 결과를 일부만 표시하는 테스트 오류가 발생할 수 있습니다. 이 오류는 Test Lab에서 일반적으로 AndroidJUnitRunner에 의해 생성되는 테스트 사례 시작 또는 종료 마커의 logcat을 파싱할 수 없음을 의미합니다.
이 문제의 일반적인 원인은 다음과 같습니다.
문제 설명
가능한 해결 방법
제한 시간으로 인해 테스트 사례가 실행되지 않았습니다. 총 테스트 기간이 지정한 제한 시간 또는 최대 제한 시간보다 길면 Test Lab에서 나머지 테스트 사례를 취소합니다.
모든 테스트를 완료할 수 있도록 매트릭스의 제한 시간을 늘리세요.
샤딩을 아직 사용 설정하지 않은 경우 각 샤드가 테스트의 하위 집합을 실행하고 더 빠른 시간 내에 완료될 수 있도록 테스트를 샤딩하세요.
이미 샤딩을 사용 설정한 경우 샤드 수를 늘립니다.
테스트 사례가 너무 일찍 종료되거나 중단되어 테스트를 완료하지 못했습니다.
포착하지 못한 예외나 어설션 오류로 인해 테스트 사례가 너무 일찍 종료될 수 있습니다. 예를 들어 앱이 올바른 뷰를 표시하지 않고 테스트 사례가 UI에서 작업을 수행할 수 없는 경우 테스트 사례가 무한 루프에 빠지거나 진행되지 않을 수 있습니다.
동영상과 logcat을 확인하여 테스트가 중지된 위치를 조사하세요.
커스텀 테스트 실행기(AndroidJUnitRunner 확장 포함)가 예기치 않게 비정상 종료되거나 logcat에 예기치 않은 테스트 사례 시작 또는 종료 마커를 작성했습니다.
테스트 실행기 코드를 확인합니다.
logcat에 작성된 과도한 로그로 인해 버퍼가 초과되거나 logcat 프로세스가 비정상 종료되었습니다.
logcat에 대한 쓰기를 줄입니다.
테스트 중인 앱이 비정상 종료되었습니다.
앱을 디버그합니다.
자주 묻는 질문(FAQ)
Test Lab의 무료 할당량은 어떻게 되나요? 할당량이 부족하면 어떻게 해야 하나요?
Firebase Test Lab은 기기에서 테스트를 수행하고 Cloud API를 사용하는 데 필요한 무료 할당량을 제공합니다. 테스트 할당량에는 Cloud API 할당량과 달리 스탠더드 Firebase 요금제가 사용됩니다.
테스트 할당량
테스트 할당량은 테스트 실행에 사용되는 기기 수에 따라 결정됩니다.
Firebase Spark 요금제는 사용자에게 정해진 테스트 할당량을 무료로 제공합니다. Blaze 요금제에서는 시간이 지남에 따라 Google Cloud 사용량이 증가하면 할당량이 증가할 수 있습니다. 테스트 할당량에 도달한 경우 다음 날까지 기다리거나 현재 Spark 요금제를 사용 중인 경우 Blaze 요금제로 업그레이드하세요.
이미 Blaze 요금제를 사용 중이면 할당량 상향 조정을 요청할 수 있습니다.
자세한 내용은 테스트 할당량을 참조하세요.
Google Cloud 콘솔에서 직접 할당량을 수정하여 할당량 상향 조정 요청을 제출합니다. 기본적으로 대부분의 한도는 최댓값으로 설정됩니다.
Google Cloud 콘솔에서 요청 양식을 작성하거나 Firebase 지원팀에 연락하여 API 할당량 상향 조정을 요청합니다.
내 백엔드에 도달하는 트래픽이 Test Lab에서 출발했는지 확인하려면 어떻게 해야 하나요?
백엔드에서 Google IP 범위와 소스 IP 주소를 대조하면 트래픽이 Firebase에서 호스팅되는 테스트 기기에서 출발했는지 확인할 수 있습니다.
Test Lab은 VPC-SC와 함께 작동하나요?
Test Lab은 Test Lab 내부 스토리지와 사용자 결과 버킷 간에 앱 및 기타 테스트 아티팩트의 복사를 차단하는 VPC-SC와 함께 작동하지 않습니다.
Test Lab에서 불안정한 테스트를 감지하려면 어떻게 해야 하나요?
테스트에서 불안정한 동작을 감지하려면
--num-flaky-test-attempts
옵션을 사용하는 것이 좋습니다. 불안정 제거 재실행도 일반 테스트 실행과 마찬가지로 요금이 청구되거나 일일 할당량에 반영됩니다.
다음 사항에 유의하세요.
실패가 감지되면 전체 테스트 실행이 다시 실행됩니다. 실패한 테스트 사례만 재시도하는 기능은 지원되지 않습니다.
불안정 제거 재시도는 동시에 실행되도록 예약되지만 트래픽이 가용 기기 수를 초과하는 경우 등에는 동시에 실행되지 않을 수 있습니다.
Test Lab은 웨어러블 기기를 지원하나요?
성공입니다. Test Lab은 Google Pixel Watch를 지원합니다. 이제 Google Pixel Watch의 독립형 Wear 앱에서 테스트를 실행할 수 있습니다. Test Lab 기기에 관한 자세한 내용은 사용 가능한 기기에서 테스트를 참조하세요.
Test Lab에서 최신 Google 기기를 지원하나요?
성공입니다. Test Lab은 Google Pixel Tablet 및 Google Pixel Fold를 지원합니다. 독립형 실제 기기에서 테스트를 실행할 수 있습니다.
Test Lab 기기에 관한 자세한 내용은 사용 가능한 기기에서 테스트를 참조하세요.
Test Lab에서 실행 중인 테스트를 감지하려면 어떻게 해야 하나요?
Firebase에서 앱을 테스트하거나 Play Console에서 사전 출시 보고서를 생성하기 위해 테스트를 실행하는 경우 MainActivity 파일에서 firebase.test.lab 시스템 속성을 확인하여 Firebase에서 호스팅되는 기기에서 테스트를 실행 중인지 확인할 수 있습니다. 그런 후 testLabSetting의 불리언 값을 기준으로 추가 문을 실행할 수 있습니다. 자세한 내용은 수정된 테스트 동작을 참조하세요.
Test Lab에서 Appium, Flutter/FlutterDriver, ReactNative/Jest, Cucumber가 지원되나요?
일부는 로드맵에 포함되어 있기는 하지만 현재로서는 이러한 테스트 및 앱 개발 플랫폼 지원을 약속할 수 없습니다. 그러나 Espresso를 지원하는 프레임워크(예: Flutter)로 앱을 빌드한 경우 Espresso를 사용하여 계측 테스트를 작성한 후 Test Lab에서 테스트할 수 있습니다.
Test Lab에서 ProGuard 또는 R8 등으로 난독화된 앱 테스트가 지원되나요?
Test Lab은 난독화 또는 난독화 해제를 명시적으로 지원하지 않습니다. 앱이 실행될 가능성이 높지만 스택 트레이스와 같은 난독화된 앱 데이터는 로그에서 난독화된 것으로 표시됩니다.
Test Lab에서 테스트하는 동안 폴더블 기기를 다양한 폴더블 상태 및 모드로 사용할 수 있나요?
다른 Firebase 제품과 달리 Firebase SDK를 추가하지 않아도 Test Lab을 사용할 수 있습니다. 아직 앱이 없는 경우 온라인으로 APK를 다운로드하거나 AndroidX GitHub 저장소의 샘플 중 하나에서 앱과 테스트 APK를 빌드할 수 있습니다.
Robo 테스트를 실행하기 위해서는 앱의 APK 파일만 있으면 되지만 계측 테스트에는 소스 코드에서 빌드된 앱과 테스트 APK가 모두 필요합니다. 자세한 내용은 계측 테스트를 참조하세요.
스크린샷 비교 테스트에서는 테스트를 실행하는 동안 얻은 화면 이미지를 예상 동작을 나타내는 골든 이미지와 비교하여 테스트 어설션을 작성합니다. 이러한 테스트는 일부 기기 유형에서 더 불안정할 수 있습니다. 이러한 종류의 테스트에는 Arm(*.arm) 에뮬레이터 기기를 타겟팅하는 것이 좋습니다. Arm 에뮬레이터 기기는 Android 스튜디오 '일반' 에뮬레이터와 매우 유사하거나 동일한 이미지를 사용합니다.
또한 예상 변경사항이 있을 때 스크린샷 테스트를 더 강력하게 만드는 데 도움이 되는 테스트 라이브러리를 조사하는 것이 좋습니다.
Test Lab에서 가상 기기를 업데이트하나요?
성공입니다. 가상 기기는 다음과 같은 변경사항이 적용되면 업데이트됩니다.
기존 이미지 업데이트
이전 API 수준 지원 중단
새로운 Android API 수준이 추가됨
적용 범위 보고서를 사용 설정하려면 어떻게 해야 하나요?
적용 범위 보고서를 사용 설정하려면 environmentVariables 필드에 coverage=true를 추가하세요.
Android Test Orchestrator를 사용하는 경우 적용 범위 결과를 저장할 디렉터리를 제공해야 합니다.
자세한 기기 정보는 API를 통해 제공되며 describe 명령어를 사용하여 gcloud 클라이언트에서 액세스할 수 있습니다.
gcloud firebase test android models describe MODEL
알려진 문제
로그인 보안문자
Robo 테스트는 로그인을 위해 사용자 인증 정보 입력 이외에 보안문자 입력 등의 추가적인 사용자 작업이 필요한 로그인 화면을 우회하지 못합니다.
UI 프레임워크 지원
Robo 테스트는 Android UI 프레임워크의 UI 요소(View, ViewGroup, WebView 객체 포함)를 사용하는 앱과 가장 잘 작동합니다. Unity 게임 엔진을 사용하는 앱을 포함하여 다른 UI 프레임워크를 사용하는 앱을 Robo 테스트로 시험하면 테스트가 첫 화면에서 종료될 수 있습니다.