Firebase Test Lab 결과 분석

명령줄 인터페이스, Android 스튜디오, Firebase Console의 Test Lab UI, Testing API 등 다양한 방법으로 Firebase Test Lab을 사용하여 Android 앱에서 테스트를 실행할 수 있습니다. 그러나 테스트를 시작하는 시점 및 결과가 저장되는 Firebase 프로젝트는 개발자가 선택하고 지정해야 합니다. 위 도구 외에 ToolResults API를 사용하여 결과를 탐색할 수 있습니다. 이 페이지에서는 이러한 테스트 결과를 검토하고 분석하는 방법을 설명합니다.

주요 개념

이전에 실행한 테스트 결과를 모두 확인하려면 Firebase Console에서 프로젝트의 왼쪽 탐색 패널에 있는 Test Lab을 선택합니다. 이 페이지에는 프로젝트에서 Test Lab으로 테스트한 앱의 모든 테스트 실행이 표시됩니다.

테스트 결과를 검토하려면 우선 다음과 같은 3가지 개념을 이해해야 합니다.

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

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

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

다음 섹션에서는 테스트 결과를 살펴보는 방법을 설명합니다.

테스트 기록 결과 해석

Test Lab을 선택하여 테스트 결과를 살펴보면 지금까지 실행한 테스트의 결과가 표시됩니다.

테스트 기록은 앱별로 그룹화됩니다. 각 앱에서 가장 최근의 5개 테스트 매트릭스만 표시되며, 매트릭스가 더 많으면 앱 테스트 목록 하단의 모든 매트릭스 링크를 클릭하여 앱 전체 목록을 볼 수 있습니다.

테스트 매트릭스 결과 해석

Test Lab UI를 통해 테스트를 시작하면 테스트 매트릭스를 확인하고 특정 테스트 실행을 클릭해 테스트 결과를 확인할 수 있는 페이지로 리디렉션됩니다. Android 스튜디오gcloud 명령어도 테스트 매트릭스 결과 페이지로 연결되는 URL을 제공합니다.

일반적인 테스트 매트릭스에서는 10여 개의 기기에서 테스트를 실행합니다. 각 테스트 실행 결과는 서로 다를 수 있습니다. 테스트 매트릭스에서 테스트를 실행했을 때 나올 수 있는 결과는 다음과 같습니다.

  • 통과 테스트 성공: 오류가 발생하지 않았습니다.
  • 실패 테스트 실패: 오류가 한 개 이상 발생했습니다.
  • 결과 불충분 테스트 성공: 테스트 결과가 확실하지 않으며 Test Lab 오류 때문일 수 있습니다.
  • 건너뜀 테스트 성공: 매트릭스의 일부 테스트 실행에 선택된 측정기준 값이 호환되지 않습니다. 선택한 기기가 특정 Android API 수준 중 한 개 이상과 호환되지 않으면 이 결과가 발생합니다.

Firebase 프로젝트의 특정 앱에 대해 모든 테스트 매트릭스의 테스트 결과를 종합하여 검토하려면 아래 예시처럼 앱 이름을 클릭합니다.

테스트 실행이 4개뿐인 테스트 매트릭스 결과 페이지 예시 테스트 매트릭스 결과

이렇게 하면 앱의 테스트 매트릭스 목록이 표시됩니다. 여기에서 테스트 매트릭스의 이름을 클릭하여 테스트 매트릭스 결과를 확인하거나 앱 이름(아래 빨간색 상자)을 클릭하여 Firebase 프로젝트에 연결된 다른 앱의 테스트 매트릭스 목록을 확인할 수 있습니다.

테스트 매트릭스 목록 페이지 예시 테스트 매트릭스 목록

테스트 매트릭스 결과는 통과 또는 실패이거나 결과 불충분일 수 있습니다. 테스트 매트릭스에 포함된 테스트 실행이 한 개라도 실패 또는 결과 불충분으로 판정되면 테스트 매트릭스는 실패 또는 결과 불충분으로 표시됩니다.

Robo 테스트 결과 해석

Robo로 테스트를 실행한 경우, 테스트 결과에는 일반적인 테스트 측정항목 외에도 UI를 크롤링하는 Robo의 동영상 및 스크린샷이 포함됩니다. 이러한 동영상 및 스크린샷에는 크롤링 중에 Robo가 취한 조치에 대한 시각적 표시가 포함됩니다. 이는 Android의 '터치 표시' 기능과 유사합니다. 표시를 이용하여 Robo의 진행 상황을 추적하고 Robo에서 발견할 수 있는 버그를 재현할 수 있습니다.

Robo 테스트 결과 동영상 예시

Robo 테스트 결과

단일 테스트 실행 결과 해석

테스트 매트릭스 결과 페이지에서 테스트 실행 중 하나를 클릭하여 해당 테스트 실행의 결과를 확인합니다.

테스트 실행 결과 페이지 예시 테스트 실행 결과

이 페이지에서는 각 테스트 실행에 필요한 시간을 확인할 수 있습니다. 또한 계측 테스트용 테스트 APK의 메서드에 해당하는 특정 테스트 사례의 결과와 테스트 로그, 스크린샷, 동영상 등의 자세한 테스트 결과도 확인할 수 있습니다. Robo 테스트의 경우 Robo 테스트로 탐색된 UI 경로를 그래픽으로 보여주는 활동 맵도 자세한 테스트 결과에 포함됩니다.

구분된 계측 테스트 결과

도구 작동 테스트 결과를 해석하는 데 도움이 되도록 Test Lab은 각 테스트를 스택 추적, 로그, 동영상이 포함된 자세한 보고서 페이지로 구분합니다. 이 기능은 Android Orchestrator 사용 여부에 관계없이 작동합니다.

테스트 사례 결과 페이지 예시 테스트 사례 결과

접근성 결과 해석

Robo 테스트는 Android 접근성 검사기를 사용하여 앱의 접근성 문제를 감지합니다(기기에서 로컬로 검사를 실행할 수도 있음). Robo 테스트의 접근성 결과를 검토하고 해석하는 방법에 대한 안내는 접근성 검사기 시작하기를 참조하세요.

앱의 접근성을 개선하는 방법에 대한 일반 정보는 Android 개발자 접근성 문서를 참조하세요.

성능 측정항목

실제 기기에서 테스트를 실행하면 다음과 같은 성능 측정항목도 반환됩니다.

측정항목기기 구성 필요
앱 시작 시간API 19 이상
CPU 사용량API 21 이상
메모리 사용량
네트워크 활동
초당 프레임 수API 21 이상 및 SurfaceView 포함
그래픽 성능API 23 이상

그래픽 성능 세부정보

그래픽 성능 보고서에는 여러 주요 그래픽 측정항목의 통계가 포함되어 있습니다.

  • Vsync 누락: 누락된 Vsync 이벤트 수를 렌더링하는 데 16밀리초 이상 걸린 프레임 수로 나눈 값입니다.
  • 높은 입력 지연 시간: 24밀리초 이상 걸린 입력 이벤트의 수를 렌더링하는 데 16밀리초 이상 걸린 프레임 수로 나눈 값입니다.
  • 느린 UI 스레드: UI 스레드가 완료되는 데 8밀리초 이상 걸린 횟수를 렌더링하는 데 16밀리초 이상 걸린 프레임 수로 나눈 값입니다.
  • 느린 작성 명령: GPU로 작성 명령어를 보내는 데 12밀리초 이상 걸린 횟수를 렌더링하는 데 16밀리초 이상 걸린 프레임 수로 나눈 값입니다.
  • 느린 비트맵 업로드: 비트맵을 GPU로 업로드하는 데 3.2밀리초 이상 걸린 횟수를 렌더링하는 데 16밀리초 이상 걸린 프레임 수로 나눈 값입니다.
  • 렌더링 시간: 테스트 실행에 속한 각 프레임의 렌더링 시간 분포입니다. 렌더링 시간이 32밀리초 이상 걸릴 경우 UI 속도가 체감할 정도로 저하됩니다. 렌더링 시간이 700보다 크면 정지된 프레임을 의미합니다. 렌더링 데이터는 dumpsys graphicsstats에서 수집됩니다.

자세한 테스트 결과

자세한 테스트 결과는 테스트 실행 후 90일 동안 제공되며 Google Cloud Storage 버킷에 저장됩니다. Firebase Console에서도 이 결과를 확인할 수 있습니다. Cloud Storage 버킷의 자세한 테스트 결과를 확인하려면 테스트 실행 결과 페이지에서 테스트 결과를 클릭하세요. 자세한 테스트 결과를 더 이상 확인할 수 없더라도 테스트 성공 및 실패 여부는 계속 확인할 수 있습니다.

자세한 테스트 결과를 90일 이상 보관하려면 --results-bucket gcloud 명령줄 옵션을 사용하여 테스트 결과를 자신이 소유한 Cloud Storage 버킷으로 전송해야 합니다. 그런 다음 수명 설정을 변경하여 Cloud Storage 버킷에 결과가 저장되는 기간을 정할 수 있습니다. 수명 설정을 변경하는 방법은 수명 주기 조건을 참조하세요.