Android Test - 1) 왜 테스트 코드를 작성하나요?

ENAN·2021년 7월 12일
1

Android Test

목록 보기
1/2

며칠 전, 네이버 신입 공채 최종 면접을 보고 왔다. 아직 결과가 나오지 않은 상태에서 면접 얘기를 하는 건 좀 그렇지만 질문과는 별개로 크게 느꼈던 부분이 있어 글을 적는다.

Test Code

🐛 테스트 코드가 없다면, 모든 변경이 잠재적 버그다.

이번 면접을 통해 가장 크게 느낀 점이자 배운 점이 하나 있다면, 바로 테스트 코드의 중요성이다.

사실 스프링 스터디를 하면서 공부할 겸 테스트 코드를 작성해본 적은 있지만, 부끄럽게도 안드로이드에서는 작성해본 적이 없었다. 아예 몰랐으면 그렇다 쳐도, 중요성을 알면서도 프로젝트를 진행할 때 적용하지 않았다는 점이 너무 부끄러웠다.


면접관 분께서 테스트코드의 중요성을 설명과 함께 다시 한 번 강조해주시고, 네이버든 어디서든 정말 중요하게 생각하는 내용이니 테스트코드를 꼭 공부해볼 것을 추천해주셨다. (탈락 시그널인가..)

개인적으로 이번 면접은 정말 많이 배운 시간이었다고 생각한다. 처음으로 돌아가서 왜 테스트 코드를 작성하는지, 무엇을 테스트해야 하는지, 어떻게 테스트하는지를 하나씩 살펴보자!

왜 테스트해야 하나?

중요성에 대해서는 익히 들어왔을 것이다. 클린 코드 책에서도 강조하고 있고, 이미 많은 개발자들에 의해 검증되었다고 생각한다. 많은 장점들이 있지만 대략적으로 정리하자면 아래와 같다.

테스트 코드를 작성함으로써 얻는 이점

  • 프로그램의 신뢰성이 높아진다

    개발자도 사람이고, 실수할 수 있다. 테스트 코드는 실수의 가능성을 훨씬 줄여준다. 이건 당연한 얘기고, 다음!

  • 개발 시간을 줄여준다

    🤔 테스트 코드를 작성하는 것도 분명 시간이 드는 일이다. 그리고 이게 바로 테스트 코드를 작성하지 않는 가장 큰 변명거리다. 그런데 개발 시간을 줄여준다니?

    우리는 어떤 부분을 개발하거나 수정한 다음에, 잘 동작하는지 테스트를 해본다. 테스트 코드를 작성하지 않았다면 앱을 실행시키고, 데이터를 입력하고, 특정 기능을 직접 수행시켜 보는 귀찮은 작업을 수행한다.

    한 두번 정도는 하겠지만, 알 수 없는 오류로 실패하는 경우 반복되는 테스트 과정에 생각보다 많은 시간과 노력이 든다. 하지만 테스트 코드를 작성하면, 실행만 시키면 끝이다. 편하고 빠르다!

    이러한 점에서 변경사항에도 쉽게 대처할 수 있다는 장점까지 얻을 수 있다. 코드를 변경하게 되면, 당연히 다른 부분에서 사이드 이펙트가 발생할 수 있는데 이러한 부분이 자동으로 파악된다!

  • 좋은 구조로 개발하게끔 도와준다

    테스트 코드를 작성하다 보면, 자연스럽게 테스트 가능한 구조가 되도록 코드를 분리하게 된다. 일부 메서드들이 별도 클래스로 분리되거나, 클래스들이 인터페이스로 추상화되거나 하는 등, 변화에 유연하게 대응할 수 있는 구조가 만들어진다.

  • 잘 짠 테스트 코드는, 문서의 역할을 한다

    테스트 코드가 주는 부수적인 효과로, 동료 개발자에게 해당 기능에 대해 설명하는 역할도 할 수 있다. 정상적인 흐름과 예외 상황에 어떻게 동작하는지 잘 작성되어 있다면, 테스트 코드만 보고서도 해당 기능에 대해 이해하기 쉽다. 즉, 테스트 코드를 잘 작성함으로써 문서 의 역할까지도 할 수 있다는 것이다.

정리

당연하게도 개발자는 문제가 발생하지 않는 프로그램을 작성해야 한다. 그리고 그것이 얼마나 보장되는지를 신뢰성이라고 표현하고, 신뢰성을 높이는 수단으로 우리는 테스트 코드 를 작성한다.

정리하자면, 테스트코드는 1. 신뢰성 높은 프로그램의 2. 생산성을 높이기 위해 작성하는 것이라고 생각하면 될 것 같다. 개발 시간을 줄여준다는 것도 사실 신뢰성 높은 프로그램을 작성한다는 전제 하에 줄어든다는 것이니까!

그리고 위에서는 나눠서 썼지만, 신뢰성이 보장된 이후는 결국 모두 생산성을 높이기 위해서로 직결된다고 생각한다. 좋은 구조로 개발하는 것도, 문서의 역할도 결국은 생산성을 높이기 위해서이지 않을까?


이제 테스트 코드를 작성할 이유는 충분히 공부했다. 지금까지는 분야를 관통하는 내용이었다면, 다음 글에서 안드로이드에서는 무엇을 테스트해야 하는지에 대해 알아보자!

참고

https://academy.realm.io/kr/posts/aw212-android-unit-ui-test-recorder-data-binding-include/?w=1

https://woovictory.github.io/2020/03/04/Android-Test/

https://chorizzori.tistory.com/85

https://brunch.co.kr/@madvirus/38

profile
여정이 곧 보상

0개의 댓글