[요약] What's new in Android testing tools (Google I/O '21)

[요약] What's new in Android testing tools (Google I/O '21)

May 20, 2021. | By: pluulove


  • 간혹 로컬 Android Studio와 CI 서버의 테스트 결과가 다른 경우가 발생한다
  • 원인은 Android Studio와 Android Gradle Plugin에서 Android Instrument Test Runner 버전이 다르기 때문이다.

  • 해결 방법으로는 Android Studio 상의 모든 테스트를 Android Gradle Plugin에서 실행하도록 위임하는 것이다.
  • Android Studio Arctic Fox에서는 이미 Unit Test를 Gradle을 통해 실행하도록 이전하고 있다

  • Gutter Action으로 Unit Test를 실행하면 Android Studio에서 자동으로 Gradle Configuration을 생성하고 Gradle을 통해 Unit Test를 실행한다
  • 최신 Android Studio Canary 버전에서는 Android Gradle Test Runner를 통해서 모든 Instrument Test를 실행한다

  • Android Studio의 설정에서 Gradle Test Runner 사용 옵션을 활성화
    • Preferences | Build, Execution, Deployment | Testing

Unified Test Platform

  • Android Studio와 Android Gradle Plugin에서 Android Test를 실행하는 Test Runner

  • 모듈 방식으로 Android Test를 개선 및 기능을 추가 가능
  • 사용 중인 Build Tool Chain 및 OS와는 독립적

  • UTP의 활용 사례로 Gradle Managed Devices로 Gradle DSL을 사용해서 Device를 정의 가능
  • 시스템 이미지 다운로드, 기기 생성, 테스트 시작부터 종료까지의 모든 과정이 포함
  • 가상 기기의 상태 저장으로 테스트 결과를 캐싱 및 Emulator 스냅샷을 활용해 테스트를 실행마다 빠르게 복원할 수 있다.

  • app 모듈에 있는 build.gradle 내에서 Device 정보를 정의할 수 있다

$ gradlew
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=true
pixel12api29DebugAndroidTest
  • Gradle Manage Virtual Device로 테스트를 실행하려면 기기 이름빌드 종류를 붙여서 Android Test Task를 실행하면 된다
  • UTP 기능이 필요하므로 속성을 전달해서 활성화한다
  • Android Gradle Plugin은 다음 처리를 진행
    • 필요한 시스템 이미지를 다운로드
    • 기기에서 테스트를 실행한 다음 결과를 반환

  • 기기 그룹에서 테스트를 지정하고 동시에 실행할 수 있다

  • Android Studio 내에서도 병렬로 Device 테스트를 사용할 수 있다
  • 메뉴의 Select Multiple Devices을 선택한 후 테스트할 디바이스를 선택하면 된다.

  • 새롭게 디자인한 테스트 결과 보고서는 병렬로 기기 테스트를 목적으로 설계되었다
  • API 버전 및 특정 기기로 필터도 가능하다

  • 특정 기기의 테스트 결과를 선택함으로 우측 정보 패널을 통해서 확인할 수 있다

Emulator Snapshots

  • 특정 시점의 가상 기기의 상태를 캡처하므로 이후에 그 상태로 빠르게 복원할 수 있다
  • Android Emulator에서 테스트를 실행할 때 테스트 실패 시 자동으로 스냅샷을 캡처하고 테스트 결과에 포함하다

  • 실패한 스냅샷 정보 및 테스트 기기에서 상태를 복원할 수 있다. 그 후 디버거를 사용해서 실패를 분석할 수 있다
  • Emulator Snapshots은 확실하지 않거나 재현이 어렵거나 실행에 오랜 시간이 걸리는 테스트 실패를 디버깅하는데 유용하다

  • 테스트 실패에 Emulator Snapshots을 사용하려면 app 모듈을 build.gradle에 속성을 추가함으로 활성화된다
  • Android Studio는 기본적으로 테스트 실행 1회에 기기당 2개의 Snapshots만 생성한다. 최대 Snapshot 갯수를 변경도 가능하다

  • Command를 통해서도 기능을 사용할 수 있다

  • Android Studio 외부에서 테스트를 실행할 때는 Run - Import Tests from File을 통해서 결과를 가져온 후 앱의 build/output 폴더에서 test-results.pb 파일을 가져오면 된다.

comments powered by Disqus

Currnte Pages Tags

Android

About

Pluu, Android Developer Blog Site

이전 블로그 링크 :네이버 블로그

Using Theme : SOLID SOLID Github

Social Links