테스트 코드란 무엇인가?
개발자라면 꼭 알아야 하는 테스트 코드!! 라는 말을 많이 들어보셨을 텐데요. 저 또한 이야기는 많이 들었지만, 정확히 왜 작성해야 하고 각 각의 의미가 어떤 것인지 상기시키기 위하여 포스팅해 보도록 하겠습니다.
테스트 코드란?🧐
소프트웨어의 제품 or 서비스의 품질을 확인하거나 소프트웨어의 버그를 찾을 때 작성하는 코드를 의미한다. 다시 말해, 제품이 예상하는 대로 동작 하는지 확인하는 것!
테스트 코드를 왜 작성해야할까? 🤔
- 기능이 정상적으로 동작하는지 확인할 수 있다.
- 보통 코드를 작성하고 일일이 실행해 보며 기능을 확인하지만 테스트 코드를 작성한다면 보다 편하게 기능이 정상적으로 동작하는지 확인 가능하다.
- 결함을 사전에 발견할 수 있다.
- 여러 가지 기능에 대한 테스트 코드를 작성해놓았다면 기존 코드를 잘 못 작성했을 때 오류가 생기므로 결함을 사전에 발견할 수 있습니다.
- Refactoring에 대한 자신감
- 기존의 코드를 다른 코드로 리팩토링 할 때 기존의 소스와 동일한 동작을 하는지에 대한 걱정을 하지 않아도 된다. 수정을 하고 테스트 코드를 실행했을 때 오류가 나지 않는다면 잘 수정한 거겠죠?👍🏻
- 문서로서 작용할 수 있다.
- 코드 작성자의 의도, 사용법, 주의사항 등이 드러나게 되어 있어 문서화의 효과도 누릴 수 있습니다.
개인적으로 3번과 4번의 이유를 절실히 체감하는거 같습니다.🥰
테스트 피라미드 ⛰
위에 설명한 것처럼
테스트 코드를 작성하면 좋은 점이 너무나도 많다.👍🏻 테스트들 중에서도 어떤 플랫폼이냐에따라 다양한 테스트들이 있지만 모든 개발자분들이 프로젝트를 진행할 때 공통적으로 작성해야 하는 테스트들이 있다. 이걸 모아놓은것이 테스트 피라미드
이다.
테스트 피라미드
는 보는 바와 같이 유닛테스트, 통합테스트, UI테스트(E2E 테스트)3가지의 테스트로 나누어 진다.
1. Unit Test
Unit Test 다른 말로 단위 테스트
라고도 부른다. 말 그대로 함수나 모듈 클래스와 같은 단위 딱 하나를 테스트하는 걸 의미한다. 예를 들어, 자전거에서 바퀴 하나를 테스트한다면 단위 테스트
이다.
2. Integration Test
그다음은 통합 테스트
이다. 하나의 단위가 아니라 여러 가지 단위를 통합했을 때 서로 상호작용을 잘하는지 테스트하는 걸 의미한다. 예를 들어, 자전거에서 바퀴와 체인을 연결하여 체인을 돌렸을 때 바퀴가 잘 돌아가는지와 같은 서로의 상호작용을 확인하는 것이 통합 테스트
이다.
3. User interface Test(E2E Test)
E2E 테스트
End-to-End의 줄임말로 끝과 끝의 테스트라고 부른다. 실제로 사용자가 앱을 사용했을 때 그 Flow를 테스트하는 것을 의미한다. 다시 말해 바퀴나 체인 부분적인 상호작용이 아니라 자전거 핸들을 잡고 페달을 밟아가며 전체적으로 테스트하는 것을 의미한다. 🚲
🕵🏻♂️ 마무리
다음 테스트 관련 포스팅으로는 JS 테스트 프레임워크 인 Jest에 대하여 설명하는 글을 올려보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다.✌️
궁금하신 점이 있다면 아래 댓글
로 남겨주세요!👇