UI 테스트 자동화

사용자 상호작용을 테스트하면 사용자가 앱과 상호작용할 때 예기치 않은 결과가 발생하거나 불만족스러운 경험을 하지 않도록 할 수 있습니다. 앱의 UI가 올바르게 작동하는지 확인해야 하는 경우 사용자 인터페이스 (UI) 테스트를 만드는 습관을 들여야 합니다.

UI 테스트에 대한 한 가지 접근 방식은 테스터가 타겟 앱에서 일련의 사용자 작업을 실행하도록 하고 올바르게 작동하는지 확인하는 것입니다. 하지만 이 수동 접근 방식은 시간이 오래 걸리고 오류가 발생하기 쉽습니다. 보다 효율적인 접근 방식은 사용자 작업이 자동화된 방식으로 실행되도록 UI 테스트를 작성하는 것입니다. 자동화된 접근 방식을 사용하면 반복 가능한 방식으로 테스트를 빠르고 안정적으로 실행할 수 있습니다.

UI 테스트는 앱 (또는 일부)을 실행한 다음 사용자 상호작용을 시뮬레이션하고 마지막으로 앱이 적절하게 반응했는지 확인합니다. 이는 소규모 구성요소의 동작 확인부터 전체 사용자 흐름을 통과하는 대규모 탐색 테스트에 이르기까지 다양한 통합 테스트입니다. 회귀를 확인하고 다양한 API 수준 및 실제 기기와의 호환성을 확인하는 데 유용합니다.

UI 테스트 실행

  • Android 스튜디오를 사용하여 계측 UI 테스트를 실행하려면 별도의 Android 테스트 폴더인 src/androidTest/java에 테스트 코드를 구현합니다. Android Gradle 플러그인은 테스트 코드를 기반으로 테스트 앱을 빌드한 다음 타겟 앱과 동일한 기기에 테스트 앱을 로드합니다. 테스트 코드에서 UI 테스트 프레임워크를 사용하여 특정 사용 시나리오를 포괄하는 테스트 작업을 실행하기 위해 타겟 앱에서 사용자 상호작용을 시뮬레이션할 수 있습니다.
  • Robolectric을 사용하여 JVM에서 UI 테스트를 실행할 수도 있습니다.

아키텍처 및 테스트 설정

앱의 아키텍처는 테스트가 더블 테스트를 위해 일부를 대체할 수 있도록 허용해야 하며 테스트에 도움이 되는 유틸리티를 제공하는 라이브러리를 사용해야 합니다. 예를 들어 데이터 저장소 모듈을 테스트에 가짜 확정 데이터를 제공하는 메모리 내 버전으로 대체할 수 있습니다.

프로덕션 및 테스트 아키텍처 다이어그램 프로덕션 다이어그램은 저장소에 데이터를 제공하는 로컬 및 원격 데이터 소스를 보여주며, 저장소는 UI에 비동기식으로 데이터를 제공합니다. 테스트 다이어그램은 UI에 데이터를 동기식으로 제공하는 가짜 저장소를 보여줍니다.
그림 3: 종속 항목을 가짜로 대체하여 UI를 테스트합니다.

종속 항목을 대체하는 데 권장되는 접근 방식은 종속 항목 삽입입니다. 자체 시스템을 수동으로 만들 수 있지만 이 경우 Hilt와 같은 DI 프레임워크를 사용하는 것이 좋습니다.

UI를 자동으로 테스트해야 하는 이유는 무엇인가요?

Android 앱은 여러 API 수준과 폼 팩터에서 수천 대의 서로 다른 기기를 타겟팅할 수 있으며, OS가 사용자에게 제공하는 높은 수준의 맞춤설정으로 인해 일부 기기에서 앱이 잘못 렌더링되거나 비정상 종료될 수도 있습니다.

UI 테스트를 통해 호환성 테스트를 실행하여 다양한 컨텍스트에서 앱의 동작을 확인할 수 있습니다. 다음과 같은 방식으로 다양한 기기에서 UI 테스트를 실행하는 것이 좋습니다.

  • API 수준: 21, 25, 30
  • 언어: 영어, 아랍어, 중국어
  • 방향: 세로 모드, 가로 모드

또한 앱은 휴대전화 외부의 동작을 확인해야 합니다. 태블릿, 폴더블, 기타 기기에서 테스트해야 합니다. 다양한 화면 크기 테스트에 대해 자세히 알아보세요.

UI 테스트 유형

이 섹션에서는 다음 두 가지 유형의 UI 테스트를 다룹니다.

  • 동작 테스트는 UI 계층 구조를 분석하여 UI 요소의 속성에 관해 어설션합니다.
  • 스크린샷 테스트는 UI의 스크린샷을 찍은 후 이전에 승인된 이미지와 비교합니다.