[Android] Test 개념
Test Code를 짜는 것은 중요하다. 하지만 짜려는 습관이 없다보니 계속해서 Test Code를 짜지 않고 개발하는 습관이 들었다. 최근에 Test Code에 관심을 가지게 되어 공부를 하고 테스트 코드를 짜보려고 한다.
이와 관련된 글은 개념편
과 실전편
(적용편)으로 나누어 작성할 예정이다.
Unit Test
컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 동작하는지 검증하는 절차이다.
단위 테스트를 적용하기 위해서는 러닝 커브도 필요하고, 무엇보다도 직접적인 기능 개발 이외에도 공수가 들어가기 때문에 꺼리는 부분이 있는데, 단위 테스트를 하면 아래와 같은 여러 장점이 있다.
- 잘못된 부분을 빠르게 확인할 수 있다. -> 프로그램의 안정성이 높아진다.
- 디버깅 시간을 단축시켜준다. -> 개발 시간을 줄여준다.
- 모듈이 의도대로 동작하고 있음을 확인할 수 있다. -> 리팩토링 시 부담을 줄여준다.
- 프로그램의 각 부분을 검증한다. -> 유닛 자체의 불확실성을 제거해준다. -> 유닛을 합쳐서 다시 검증하는 통합 테스트에 유용하다.
안드로이드의 테스트 종류
- Unit Test
- 일반적으로 코드의 유닛 단위(메소드, 클래스, 컴포넌트)의 기능을 실행하는 방식
- Tool : JUnit, Mockito, PowerMock
- UI Test
- 사용자 인터랙션(버튼 클릭, 텍스트 입력 등)을 평가
- Tool : Espresso, UIAutomator etc…
src/androidTest 파일과 src/test 파일이 있는 것을 사진을 통해 확인할 수 있다.
androidTest 파일이 UI Test를 진행하는 파일들이 있는 곳이고, 아래의 test 파일이 Unit Test를 진행하는 파일들이 있는 곳이다.
기본적으로 안드로이드에서는 JUnit을 지원하여 이를 활용해 Unit Test를 진행할 수 있다.
Unit 테스트를 통해서 안드로이드 UI와 관련이 없는 부분을 테스트할 수 있다. 가령, 계산기 클래스를 만들어서 그 안의 메소드 동작을 검증할 수 있다.
JUnit & Mockito
- JUnit : Java 프로그래밍 언어용으로 설계된 단위 테스트 프레임워크.
- Mockito : 자바에서 단위 테스트를 하기 위해 Mock을 만들어주는 프레임워크.
모의 객체(Mock Object)
란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트할 경우, 테스트를 수행할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듈을 흉내내는 가짜 모듈을 작성하여 테스트의 효용성을 높이는 데 사용하는 객체이다.
다른 포스팅에서 Mockito에 관해서 더 알아볼 예정이다.