테스트 대상은 앱 유형, 개발팀, 기존 코드의 양, 사용된 아키텍처와 같은 요소에 따라 달라집니다. 다음 섹션에서는 초보자가 앱에서 테스트할 항목을 계획할 때 고려할 만한 사항을 간략하게 설명합니다.
테스트 디렉터리 구성
Android 스튜디오의 일반적인 프로젝트에는 실행 환경에 따라 테스트를 보유하는 디렉터리가 두 개 포함되어 있습니다. 설명된 대로 다음 디렉터리에 테스트를 구성합니다.
androidTest
디렉터리에는 실제 또는 가상 기기에서 실행되는 테스트가 포함되어야 합니다. 이러한 테스트에는 통합 테스트, 엔드 투 엔드 테스트, JVM만으로 앱 기능의 유효성을 검사할 수 없는 기타 테스트가 포함됩니다.test
디렉터리에는 로컬 시스템에서 실행되는 테스트(예: 단위 테스트)가 포함되어야 합니다. 위와 달리 로컬 JVM에서 실행되는 테스트일 수 있습니다.
필수 단위 테스트
권장사항을 따를 때는 다음과 같은 경우에 단위 테스트를 사용해야 합니다.
- ViewModel 또는 프레젠터의 단위 테스트
- data 레이어, 특히 저장소의 단위 테스트 대부분의 데이터 레이어는 플랫폼과 독립적이어야 합니다. 이렇게 하면 테스트 더블이 테스트에서 데이터베이스 모듈과 원격 데이터 소스를 대체할 수 있습니다. Android에서 테스트 더블 사용에 관한 가이드를 참고하세요.
- 사용 사례 및 상호작용자와 마찬가지로 도메인 레이어와 같은 기타 플랫폼과 상관없는 레이어의 단위 테스트
- 문자열 조작 및 수학과 같은 유틸리티 클래스의 단위 테스트
특이한 케이스 테스트
단위 테스트는 일반 사례와 특이 사례 모두에 집중해야 합니다. 특이 사례는 인간 테스터와 대규모 테스트에서 포착할 가능성이 낮은 드문 시나리오입니다. 예를 들면 다음과 같습니다.
- 음수, 0, 경계 조건을 사용하는 수학 연산
- 발생할 수 있는 모든 네트워크 연결 오류입니다.
- 잘못된 형식의 JSON과 같은 손상된 데이터입니다.
- 파일에 저장할 때 전체 저장용량 시뮬레이션하기
- 프로세스 도중에 다시 생성된 객체 (예: 기기 회전 시의 활동)
피해야 할 단위 테스트
일부 단위 테스트는 값이 낮기 때문에 피해야 합니다.
- 코드가 아니라 프레임워크나 라이브러리의 올바른 작업을 확인하는 테스트
- 활동, 프래그먼트, 서비스와 같은 프레임워크 진입점에는 비즈니스 로직이 없어야 하므로 단위 테스트가 우선순위가 되어서는 안 됩니다. 활동의 단위 테스트는 대부분 프레임워크 코드를 다루고 더 복잡한 설정이 필요하기 때문에 가치가 거의 없습니다. UI 테스트와 같은 계측 테스트에서 이러한 클래스를 처리할 수 있습니다.
UI 테스트
다음과 같은 몇 가지 유형의 UI 테스트를 사용해야 합니다.
- 화면 UI 테스트는 단일 화면에서 중요한 사용자 상호작용을 확인합니다. 버튼 클릭, 양식 입력, 표시된 상태 확인과 같은 작업을 실행합니다. 화면당 하나의 테스트 클래스로 시작하는 것이 좋습니다.
- 가장 일반적인 경로를 다루는 사용자 흐름 테스트 또는 탐색 테스트 이 테스트는 탐색 흐름을 통해 이동하는 사용자를 시뮬레이션합니다. 이러한 테스트는 간단한 테스트로, 초기화 시 런타임 비정상 종료를 확인하는 데 유용합니다.
기타 테스트
스크린샷 테스트, 성능 테스트, monkey 테스트와 같은 더 전문화된 테스트가 있습니다. 회귀, 접근성, 호환성과 같은 목적에 따라 테스트를 분류할 수도 있습니다.
추가 자료
개별적으로 테스트하려면 테스트 대상의 종속 항목을 일반적으로 '테스트 더블'이라고 하는 모조 또는 모의 종속 항목으로 대체해야 하는 경우가 많습니다. Android에서 테스트 더블 사용에서 자세히 알아보세요.
단위 테스트와 UI 테스트를 만드는 방법을 알아보려면 테스트 Codelab을 참고하세요.