2020. 6. 18. 15:59ㆍ└ Foundation/Android TEST
테스트 작성
테스트 피라미드 수준
-
소형 테스트(Unit Test) : 한 번에 한 클래스씩 앱 동작의 유효성 검사하는 단위 테스트(Unit test)
-
중형 테스트(Intergration Test) : 모듈 내의 스택 수준 간 상호작용 or 관련 모듈 간 상호작용의 유효성을 검사하는 통합 테스트
-
대형 테스트(UI Test) : 앱의 여러 모듈에 걸쳐 사용자 여정의 유효성을 검사하는 엔드 투 엔드 테스트
소형에서 대형으로 갈수록 충실도, 실행 시간, 유지보수 및 디버깅 노력 증가 따라서, 테스트 비율은 소형 70%, 중형 20% 대형 10% 가 적당하다.
1. 소형 테스트 작성
-
앱 내 각 클래스의 기능 및 계약을 철저하게 검증하는 단위 테스트
-
특정 클래스 내에 메서드를 추가하고 변경할 때 해당하는 메서드에 관한 단위 테스트를 만들고 실행
-
로컬 단위 테스트
-
JVM 환경 테스트인 경우 Robolectric 사용가능
-
-
계측 단위 테스트
-
실제 기기 또는 에뮬레이터에서 계측 단위 테스트 가능
-
계측 테스트를 실행하는 경우 AndroidX 테스트에서 다음 스레드 사용
-
Main Thread (UI Thread, 활동 Thread), 여기서 UI 상호작용 및 액티비티 수명 주기 이벤트, 발생 테스트가 Main Thread에서 실행되어야 하는 경우 @UiThreadTest 주석 사용
-
테스트 모음이 시작될 때 AndroidJUnitTest 클래스가 이 스레드를 시작
-
-
2. 중형 테스트 작성
-
모듈 수준에서 앱 동작의 유효성을 검사해야하는 경우 단위 그룹의 공동작업 및 상호작용 유효성을 검사하는 통합테스트인 중형테스트를 작성
-
중형 테스트의 좋은 예
-
뷰와 뷰 모델 간의 상호작용(예: Fragment 개체 테스트, 레이아웃 XML 유효성 검사 또는 ViewModel 개체의 데이터 바인딩 로직 평가)
-
여러 데이터 소스 및 데이터 액세스 개체(DAO)가 예상대로 상호작용하는지 확인하는 앱 저장소 레이어의 테스트
-
특정 화면의 상호작용을 테스트하는 앱의 세로 슬라이스. 이러한 테스트는 앱 스택의 레이어 전반에서 상호작용을 확인
-
앱의 특정 영역을 평가하는 다중 프래그먼트 테스트. 이 목록에 언급된 다른 유형의 중형 테스트와는 달리 일반적으로 이 유형의 테스트에는 실제 기기가 필요합니다. 테스트 중인 상호작용에 여러 UI 요소가 포함되어 있기 때문입니다.
-
-
위의 테스트를 실행하기 위해서 다음 단계를 따름
-
Espresso Intents 라이브러리의 메서드 이용
-
IntentSubject 와 Truth 기반 어센셜을 함께 사용하여 캡쳐된 인텐트 확인
-
-
계측 중형 테스트 실행 시 Espresso 사용
-
Espresso 는 기기 또는 Robolectric에서 다음과 같은 UI 상호작용을 실행할 때 작업을 동기화된 상태로 유지함
-
Performing actions on View objects.
-
Assessing how users with accessibility needs can use your app.
-
Locating and activating items within RecyclerView and AdapterView objects.
-
Validating the state of outgoing intents.
-
Verifying the structure of a DOM within WebView objects.
-
-
3. 대형 테스트 작성
-
앱 내 각 클래스와 모듈을 격리된 상태에서 테스트하는것도 중요하지만 여러 모듈 및 기능을 통해 사용자를 안내하는 엔드 투 엔드 워크플로의 유효성을 검사하는 것도 중요
-
Espresso의 동기화 지원
-
Espresso는 중간 계측 테스트 지원뿐만 아니라 대형 테스트에서도 동기화를 지원
-
Completing workflows that cross your app's process boundaries. Available only on Android 8.0 (API level 26) and higher.
-
Tracking long-running background operations within your app.
-
Performing off-device tests.
-
-
'└ Foundation > Android TEST' 카테고리의 다른 글
[Android TEST/안드로이드 테스트] 테스트 기본 요소 정리(1) - 테스트 장점, 테스트 환경 구성 (0) | 2020.06.17 |
---|---|
[Android / 안드로이드] 안드로이드 테스트 유형 및 위치 (0) | 2020.05.28 |