개발자라면 꼭 알아야 하는 테스트 코드!! 라는 말을 많이 들어보셨을 텐데요. 저 또한 이야기는 많이 들었지만, 정확히 왜 작성해야 하고 각 각의 의미가 어떤 것인지 상기시키기 위하여 포스팅해 보도록 하겠습니다.

테스트 코드란?🧐

소프트웨어의 제품 or 서비스의 품질을 확인하거나 소프트웨어의 버그를 찾을 때 작성하는 코드를 의미한다. 다시 말해, 제품이 예상하는 대로 동작 하는지 확인하는 것!

테스트 코드를 왜 작성해야할까? 🤔

  1. 기능이 정상적으로 동작하는지 확인할 수 있다.
  • 보통 코드를 작성하고 일일이 실행해 보며 기능을 확인하지만 테스트 코드를 작성한다면 보다 편하게 기능이 정상적으로 동작하는지 확인 가능하다.
  1. 결함을 사전에 발견할 수 있다.
  • 여러 가지 기능에 대한 테스트 코드를 작성해놓았다면 기존 코드를 잘 못 작성했을 때 오류가 생기므로 결함을 사전에 발견할 수 있습니다.
  1. Refactoring에 대한 자신감
  • 기존의 코드를 다른 코드로 리팩토링 할 때 기존의 소스와 동일한 동작을 하는지에 대한 걱정을 하지 않아도 된다. 수정을 하고 테스트 코드를 실행했을 때 오류가 나지 않는다면 잘 수정한 거겠죠?👍🏻
  1. 문서로서 작용할 수 있다.
  • 코드 작성자의 의도, 사용법, 주의사항 등이 드러나게 되어 있어 문서화의 효과도 누릴 수 있습니다.

개인적으로 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에 대하여 설명하는 글을 올려보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다.✌️


궁금하신 점이 있다면 아래 댓글로 남겨주세요!👇