많은 프로젝트에서 TDD를 도입하고 있고, JD에도 TDD 주도 개발을 경험해본 인재를 찾기에 테스트 주도 개발이란 무엇인지 궁금해졌다. 궁금한건 못참기 때문에 역시나 궁금증을 풀기위해 테스트에 발을 담가보았다.
그리고 이번 기회에 아직 테스트를 실전 프로젝트에서 사용해보지 못해 부족한 부분도 많겠지만 드디어 테스트에 대한 개념정리와 테스트를 해야하는 이유, 테스트의 종류와 테스트를 진행할 때 사용하는 라이브러리의 사용법을 배웠기 때문에 잊기 전에 정리해본다.
테스트를 해야하는 이유
- 테스트 코드는 기능 코드를 구현하기 전에 먼저 작성한다. 따라서 테스트 코드를 작성하면서 기능 구현 전에 발생할 수 있는 버그를 먼저 확인하고 기능 코드를 작성해 버그를 줄일 수 있다.
- 테스트 코드를 작성하면서 앞으로 작성할 코드가 요구사항에 맞는지 확인할 수 있다. 테스트 코드로 요구사항에 맞는 코드를 작성할 수 있는지 확인하고 코드 작성의 청사진을 만들 수 있다.
- 테스트 코드의 성능 결과를 보고 코드의 성능이 빨라지기 위해 어떻게 코드를 작성해야하는지 테스트해볼 수 있다.
- 테스트 코드를 작성하기 위해서는 코드간의 의존성이 낮아져야하는데 코드를 리팩토링하면서 코드의 의존성을 낮출 수 있다.
- 테스트를 통해 코드가 어떤 의도로 작성되었는지 쉽게 확인할 수 있다.
Test Pyramid
테스트는 크게 3단계로 나뉜다. Unit Test -> Integration Test -> E2E Test
Unit Test : 함수, 모듈, 클래스 단위의 테스트를 일컫는다.
Integration Test : 여러 Unit들을 통합했을 때 서로의 상호작용이 의도한 대로 진행되는지 테스트하는 과정을 말한다.
E2E Test : UI 테스트, 사용자 테스트라고도 부른다. 앱을 사용할 때 사용자가 실제 앱을 사용할 때와 유사한 환경에서 테스트한다. 최종 테스트이다.
피라미드의 상단으로 올라갈 수록 비용이 높아지고 시간이 많이 소요되기 때문에 Unit test, Integration를 통해 비용과 시간을 적게 쓰는 테스트 코드를 작성하는 것이 중요하다.
회사와 프로젝트에 따라 다르지만 개발자가 모든 테스트 단계에 대한 테스트를 작성하기도 하고 아니기도하다. 따라서 테스트 코드를 작성할 생각이라면 어느 단계까지 테스트 코드를 작성할지 정하고 시작하는 것이 좋다.
💡 참조
Comments powered by Disqus.