마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

테스트코드 어디부터 어떻게 해야될까요? (unit test)

0 추천
테스트코드를 한번도 작성을 안해봐서 이번에 공부하고 보려는데 여태 회사들을 다니면서 전에 개발하시던 개발자분들도 쓴걸 못봤고, 저도 테스트코드를 안써봐서 그런데.. 정확히 어떤거를 테스트해봐야될까요? 계산?같은 로직은 없는터라..

어떤걸 정확히 테스트를 해야할지 감이 안잡힙니다 회사코드나 제 토이프로젝트나 테스트코드를 작성해보려고 하는데요

둘다 mvvm을 쓰고 있습니다 ui 테스트보단 unit test를 해보려고 합니다만 어떻게 해야될지 모르겠네요
수원통학러 (3,570 포인트) 님이 2022년 7월 18일 질문

1개의 답변

0 추천
테스트를 다음과 같은 세가지로 많이들 분류를 합니다. 아주 간략한 정의는 다음과 같구요.

- Unit test(단위테스트) : 같은 레이어에 존재하는 한가지 단위 기능에 대해 테스트를 합, 예들 들면 sum이라는 함수 테스트.
- Integration test(통합테스트):  다른 유닛, 모듈, 레이에 대한 테스트 예: ViewModel <-> Repository, Repository <-> Storage
- End to end test(??): 사용자 인터페이스부터 네트워크 까지, 사용자의 동작에 기반한 테스트.

위에서 아래로 갈수록 복잡하고, 시간이 많이 걸리고, 외부사항에 종속성이 생깁니다. 예를 들면 End to end test같은 경우 네트워크 호출이 존재할 때 네트워크가 끊기거나 하면 테스트에 영향을 주게 됩니다.

보통 개발자의 입장에서는 유닛테스트가 제일 먼저 작성해볼 수 있는 테스트입니다. 작성하기가 대체로 쉽고,간단하기 때문입니다. 안드로이드라면 UI를 제외한 ViewModel, Repository 등에 있는 public 함수 중 검증이 필요한 함수를 테스트 대상으로 삼으시면 됩니다. 테스트의 주요목적은 버그 조기 발견, 변경이 생길 때 변경을 좀 더 안전하게 할 수 있도록 해주고, 궁극적으로는 개발 속도의 향상을 목적으로 하게 됩니다.

라이브러리는 build.gragle을 수정하지 않으셨다면, Junit이 기본으로 들어가 있습니다. 참고로 테스트는 Single thread에서 돌아가야 하기 때문에, ViewModel, Cortoutine등을 사용할 경우, 약간의 추가작업이 필요합니다. 안드로이드 개발자 사이트와 Coroutine 사이트를 참조하시고 구글 repository나 검색 등을 통하여 가시면 많은 예제를 찾으실 수 있습니다.

개인적으로는, TDD(Test Driven Development)를 하지 않으면, 테스트를 잘 작성하지 않게 되는 경향이 있고, 작성한 테스트도 유용하지 않을 때가 많이 생기는 것 같습니다. 결국 테스트 작성은 좋은 습관을 가지느냐 마느냐의 차이라고 보입니다.
spark (225,780 포인트) 님이 2022년 7월 18일 답변
ViewModel테스트 관련 Youtube 링크하나 남길게요.
https://www.youtube.com/watch?v=mNUBSRmj0Uk
...