안드로이드 앱을 개발하다 보면 여러 이슈가 생깁니다. 그 이슈를 확인하고 고치기를 반복하다. 개발 중에 test를 한다면 이러한 이슈를 줄일 수 있을 것이라 확신하여 테스트 기법을 공부하고 실습하여 성장하고자 합니다.
이러한 부분을 구글링을 통해 Test와 관련된 정보들을 찾으려하였지만 단편적인 정보들만있있습니다. 그래서 gpt로 앱 개발 시 테스트에 대해 학습할 수 있는 커리큘럼을 제공받아 그커리큘럼대로 체계적으로 학습을 해볼까 합니다.
1. 테스트 개념 이해 및 중요성
- 학습 목표: 소프트웨어 테스트의 중요성, 기본 원칙 이해
- 학습 항목:
- 소프트웨어 테스트의 목적
- 안드로이드에서의 테스트 필요성
- 테스트 피라미드 (단위 테스트, 통합 테스트, UI 테스트)
2. JUnit을 이용한 단위 테스트
- 학습 목표: 안드로이드에서 비즈니스 로직을 검증하는 단위 테스트 작성법 학습
- 학습 항목:
- JUnit 기본 개념 및 구조
- 안드로이드에서 JUnit 4와 JUnit 5 사용법
- Mocking과 Stubbing: Mockito 활용
- 예외 상황 처리 테스트
3. Android Instrumentation Test (통합 테스트)
- 학습 목표: 안드로이드에서 통합 테스트 작성법 학습
- 학습 항목:
- Android Instrumentation 개념 이해
- Espresso를 활용한 UI 테스트 기본
- View와 ViewModel을 함께 테스트하는 방법
- Activity, Fragment 통합 테스트
4. UI 테스트와 Espresso
- 학습 목표: 안드로이드 UI 테스트를 효과적으로 작성하고 자동화하는 방법 학습
- 학습 항목:
- Espresso 프레임워크 개요
- Espresso로 UI 요소 상호작용 테스트
- RecyclerView, ViewPager 등의 복잡한 UI 테스트
- Espresso Test Recorder 사용법 (코드 없이 테스트 케이스 작성)
5. Mockito와 MockK로 의존성 주입된 클래스 테스트
- 학습 목표: 의존성이 있는 객체의 동작을 테스트하기 위한 Mocking 기법 학습
- 학습 항목:
- Mockito 기본 사용법
- MockK을 사용한 Kotlin 환경에서의 Mocking
- 의존성 주입된 클래스의 테스트
- Hilt를 이용한 Dependency Injection과 테스트
6. UI 테스트 최적화
- 학습 목표: UI 테스트의 성능을 최적화하고 유지보수성을 높이는 방법 학습
- 학습 항목:
- Espresso IdleResource를 이용한 비동기 작업 처리
- RecyclerView, ListView 성능 테스트
- FragmentScenario와 ActivityScenario 활용
- 데이터베이스, 네트워크 등 느린 테스트 개선 방법
7. 로컬 DB 테스트(Room 테스트)
- 학습 목표: 로컬 데이터베이스의 CRUD 동작을 검증하는 방법 학습
- 학습 항목:
- Room을 이용한 로컬 DB 테스트
- in-memory database 활용
- Room과 LiveData/Flow를 결합한 테스트
8. 네트워크 레이어 테스트 (Retrofit, OkHttp)
- 학습 목표: 네트워크 요청 및 응답을 모킹하여 테스트하는 방법 학습
- 학습 항목:
- Retrofit을 통한 API 호출 테스트
- OkHttp MockWebServer를 이용한 네트워크 모킹
- 네트워크 상태에 따른 테스트 케이스 작성
9. CI/CD 파이프라인에서의 테스트 자동화
- 학습 목표: 지속적인 통합(CI)에서 자동화 테스트를 설정하는 방법 학습
- 학습 항목:
- GitHub Actions, Jenkins 등 CI/CD 파이프라인 개요
- 테스트를 자동화하여 빌드 프로세스에 통합하기
- 테스트 리포트 생성 및 분석
10. 테스트 커버리지와 코드 품질 관리
- 학습 목표: 테스트 커버리지 측정 및 코드 품질 유지 방법 학습
- 학습 항목:
- JaCoCo를 사용한 테스트 커버리지 측정
- SonarQube 등 코드 품질 도구와 통합
- 테스트 커버리지를 높이는 방법과 적절한 테스트 작성 요령
'안드로이드 > 테스트' 카테고리의 다른 글
안드로이드 TDD, 안정된 개발 환경 구축 (0) | 2024.11.04 |
---|---|
[안드로이드 / Test] 3. Android Instrumentation Test (통합 테스트) (0) | 2024.10.31 |
[안드로이드 / Test] 2. JUnit을 이용한 단위 테스트 (0) | 2024.10.24 |
[안드로이드 / Test] 1. 테스트 개념 이해 및 중요성 (0) | 2024.10.24 |