Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

계측 테스트 시작하기

이 가이드에서는 Firebase Test Lab을 사용하여 계측 테스트를 준비하고 실행하는 방법을 설명합니다. 이 가이드를 사용하려면 Espresso 또는 UI Automator 2.0 Android 테스트 프레임워크를 사용하는 개발자나 개발자 팀에서 작성한 계측 테스트가 필요합니다. 계측 테스트는 실제 기기에서 최대 45분, 가상 기기에서 최대 60분 동안 실행될 수 있습니다.

이후 단계에서 앱의 APK와 테스트 APK를 Firebase에 업로드합니다. 테스트 APK 만들기에 관해 자세히 알아보려면 앱 테스트를 참조하세요. NotePad 샘플 앱을 다운로드할 수도 있습니다.

1단계. (선택사항) 앱에 스크린샷 라이브러리 추가

Test Lab은 앱에서 계측 테스트를 실행할 때 스크린샷을 만들 수 있는 스크린샷 라이브러리를 제공합니다. 테스트가 완료되면 Android 스튜디오 또는 Firebase Console에서 스크린샷을 볼 수 있습니다.

스크린샷을 만드는 기능은 테스트 APK app-debug-test-unaligned.apk 및 NotePad 샘플 앱에 이미 통합되어 있으며 Robo 테스트를 실행할 때도 스크린샷이 자동으로 캡처됩니다.

  1. Android 스튜디오에서 프로젝트 뷰를 열고 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭합니다. 그런 다음 새로 만들기 > 디렉터리를 클릭합니다.

  2. 새 디렉터리 대화상자에 aars를 입력합니다. 이렇게 하면 테스트 프로젝트의 루트에 app 폴더의 이웃 디렉터리로 aars 디렉터리가 생성됩니다.

  3. cloudtestingscreenshotter_lib.aar을 복사하여 aars 폴더에 붙여 넣습니다.

  4. 앱의 루트 수준(프로젝트 수준) build.gradle 파일에서 모든 repositories 블록에 aars 폴더에 대한 참조를 추가합니다.

    repositories {
        jcenter()
        flatDir {
            dirs '../aars'
        }
    }
    ...
  5. 모듈의 최상위 디렉터리(NotePad 예시 앱의 경우 app 디렉터리)에서 build.gradle 파일을 열고 cloudtestingscreenshotter_lib.aar에 대한 종속 항목을 최상위 dependencies 블록에 추가합니다.

    dependencies {
        // Cloud testing
        androidTestCompile (name:'cloudtestingscreenshotter_lib', ext:'aar')
        // Other dependencies go here
        }
    
  6. AndroidManifest.xml 파일에서 <manifest> 태그 내에 다음 줄을 추가하여 앱의 시스템 권한을 지정합니다. Android 10(API 수준 29) 이상에서 테스트하는 경우 WRITE_EXTERNAL_STORAGE 권한을 생략합니다(앱에서 스크린샷을 기기에 읽고 쓰기 위해 이 권한이 필요하지 않음).

    <manifest ... >
       <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
       <uses-permission android:name="android.permission.INTERNET"/>
       ...
    </manifest>
    

테스트 중 스크린샷을 만들 시점에 cloudtestingscreenshotter_lib 라이브러리의 ScreenShotter.takeScreenshot 메서드를 호출합니다. 첫 번째 인수는 스크린샷을 식별하는 데 사용할 라벨로서 다음 예시에서는 main_screen_2를 사용합니다.

자바

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);

Kotlin+KTX

ScreenShotter.takeScreenshot("main_screen_2", this /* activity */)

스크린샷 보기

Android 스튜디오를 사용하여 테스트를 실행하는 경우 테스트가 완료되면 테스트 결과 트리에서 요소를 선택하고 스크린샷 보기 스크린샷 보기 옵션을 클릭하여 테스트 중에 생성된 스크린샷을 비교할 수 있습니다.

스크린샷 비교 화면

다음과 같이 서로 다른 구성의 스크린샷을 선택하여 비교할 수 있습니다.

태스크 작업
테스트 실행 간 전환 왼쪽 상단의 드롭다운 메뉴를 사용합니다.

테스트 사례 메뉴
테스트 실행 내에서 스크린샷 간 전환 오른쪽 상단의 화살표를 사용합니다.

스크린샷 전환
현재 뷰에 스크린샷 비교 패널 추가 비교를 클릭합니다.

비교
다른 테스트 측정기준(기기 유형, 방향, 언어 등)을 선택합니다. 스크린샷 하단 목록에서 새 측정기준 요소를 선택합니다.

2단계. 선택적 테스트 기능 사용 설정

Test Lab으로 테스트를 실행하기 전에 테스트에서 다음 기능을 사용 설정할 수 있습니다.

조정자 사용 설정

Android Test Orchestrator는 앱의 각 계측 테스트를 개별적으로 실행하는 도구입니다. Test Lab은 항상 최신 버전의 조정자를 사용합니다.

Test Lab에서 조정자를 사용 설정하려면 계측 테스트 설정에서 추가 옵션 > 조정자로 실행을 클릭합니다.

장점 및 단점

  • 장점: 공유 상태 없음. 각 테스트가 자체 계측 인스턴스에서 실행되므로 테스트 간에 공유 상태가 누적되지 않습니다.
  • 장점: 오류 격리. 테스트 중 하나에서 오류가 발생해도 오류가 발생한 테스트의 계측만 종료되고 다른 테스트는 계속 실행됩니다.
  • 단점: 런타임 증가. 각 테스트는 자체 계측 인스턴스를 실행하므로 전체 테스트 처리에 다소 시간이 걸립니다. 확인하지 않는 경우 실행 시간이 길어지면 할당량 사용 또는 청구 시간이 영향을 받고 기기의 타임아웃 시간이 초과될 수 있습니다.

샤딩 사용 설정

테스트에 샤딩을 수행하면 일련의 테스트가 개별적으로 분리되어 실행되는 하위 그룹(샤드)으로 분할됩니다. Test Lab은 자동으로 여러 기기를 사용해 각 샤드를 동시 실행하여 전체 테스트 완료 시간을 단축합니다.

테스트 샤딩 작동 방식

샤드 N개를 만든다고 가정해보겠습니다. 선택한 각 기기에서 Test Lab은 동일한 기기 N개를 가동하고 각 기기에서 테스트 일부를 실행합니다. 즉, 샤딩하지 않은 테스트 사례에서는 항상 기기마다 테스트가 1번 실행되지만 샤딩한 테스트 사례에서는 기기마다 테스트가 여러 번 실행됩니다. Test Lab의 핵심 개념에 대한 간략한 개요는 핵심 개념을 참조하세요.

Firebase Console에서 테스트 샤딩을 사용 설정할 수 있습니다.

  1. 계측 테스트 설정에서 추가 옵션을 클릭합니다.

  2. 샤딩 섹션에서 실행할 샤드 수를 입력합니다.

테스트 샤드 비용 청구

Test Lab은 AndroidJUnitRunner의 기본 제공 샤딩 메커니즘을 활용하여 샤드를 구현합니다. 빈 샤드(테스트 사례가 할당되지 않은 샤드) 가동 시 요금 청구를 방지하려면 만든 샤드 수가 총 테스트 사례 수보다 적어야 합니다. 각 테스트 사례를 실행하는 데 걸리는 시간에 따라 일반적으로 샤드마다 테스트 사례를 2~10개 할당하는 것이 좋습니다.

결제에 대한 자세한 내용은 사용량, 할당량, 결제를 참조하세요.