안드로이드 테스트시 무엇을 해야하는가?

1 분 소요

테스트 해야 하는 것은 개발팀 , 레거시 코드의 양 , 앱의 유형 , 아키텍쳐 같은 요인에 달려있다.

테스트 폴더 구성


일반적으로 안드로이드 스튜디오는 수행하는 환경에 따라 2개의 테스트 폴더를 가진다.

  • androidTest 폴더는 가상기기나 실제 기기에서 하는 테스트를 포함한다. 통합 테스트 , e2e(end to end) 테스트 또는 JVM 혼자서는 앱의 기능을 검증할 수 없는 그런류들의 테스트등을 한다.

  • test 폴더는 개발머신에서 동작하고 위의 테스트와는 반대로 로컬의 JVM 에서 진행하는 테스트다.

필수적인 단위 테스트


다음과 같은 경우 단위 테스트를 해야한다.

  • ViewModel 또는 Presenter 에 대한 단위 테스트

  • Data 영역 (특히 Repository) 에 대한 단위 테스트. 대부분의 Data 영역은 플랫폼 독립적이여야한다. Test Doubles 을 사용해 Database 모듈이나 Remote Data Source 등을 교체 할 수 있다.

  • Domain 같은 다른 플랫폼 독립적인 영역 대한 단위 테스트.

  • String 을 다루거나 계산 등이 들어가는 유틸 클래스에 대한 단위 테스트

Edge Cases 테스트

단위 테스트는 일반과 Edge Cases 모두에 집중해야한다. Edge Cases 는 테스터나 큰 테스트에서 잡히지 않는 보통의 시나리오가 아닌 케이스다.

  • 음수나 0 등을 사용해 계산시 생기는 문제

  • 모든 가능한 네트워크 접속 오류

  • 잘못된 데이터 (malformed JSON -> JSON 형태 깨짐)

  • 용량 꽉 찻을때 파일 저장

  • 프로세스 중간에 객체 재생성 (화면회전 시 액티비티)

피해야할 단위 테스트

몇몇 단위 테스트는 기대값이 작아서 피하는 편이 낫다.

  • 내 코드가 아닌 프레임워크나 라이브러리 검증 테스트

  • 프레임워크 진입점인 액티비티나 프래그먼트나 비지니스 로직이 없는 서비스등은 단위 테스트를 하는것이 우선시 되지 않는다. 액티비티등을 단위 테스트하는 것은 기대값이 작고 프레임워크 코드를 다루기 때문에 설정해야 할 부분도 많다. 이런 테스트는 계측 테스트에서나 UI 테스트에서 한다.

UI 테스트


  • Screen UI Test 는 단일 화면에서 치명적일수 있는 유저 상호작용 확인한다. 버튼 클릭, 폼에 작성,뷰에서 객체가 보이는지 안보이는지 등을 수행한다. 스크린당 하나의 테스트 클래스를 가지는게 좋다.

  • 유저 흐름 또는 네비게이션 테스트 (User Flow Tests Or Navigation Test) 는 대부분의 공통적인 부분을 다룬다. 해당 테스트들은 네비게이션 흐름에 따른 유저 동작을 시뮬레이트 한다. 초기화시 충돌 등을 체크할때 유용하다.

다른 테스트


스크린샷 테스트 라던가 퍼포먼스 테스트 Monkey Test 등 여러 특별한 테스트들이 여기 해당된다. 접근성이나 호환성 회귀 테스트등 목적에 따라 분류 할 수 있다.

참조


What to test in Android

카테고리: ,

업데이트:

댓글남기기