테스트코드 (Test Code) : 의도한대로 동작하는지 시험하기 위한 코드
- 코드의 멀쩡함을 증명하기 위함이라기 보단, "멀쩡하다면 이런 결과가 나와야한다" 는 일종의 자가진단을 위한 수단
테스트 종류(아주 일부분)
- 단위 테스트 (Unit Test) : 개별 함수나 메서드 같이 일부분을 테스트
- 통합 테스트 (Intergration Test) : 여러 모듈이나 서비스, DB, 외부 라이브러리 등 여러 요소가 합쳐졌을때 생기는 문제를 방지하기 위한 테스트
- E2E 테스트 (End-To-End Test) : 말 그대로 끝에서 끝까지. 백엔드부터 최종적으로 웹 페이지가 원하는 대로 동작하는지 확인하는 테스트
Jest : 페이스북에서 개발한 테스트 프레임워크
- JS 개발자들 사이에서 가장 많이 쓰이는 테스팅 프레임워크 중 하나
- 프론트엔드 라이브러리인 React.js와의 궁합도 좋음
- Nest.Js에서도 기본 지원
- Jest 외에도 Storybook, Mocha, Cypress 등이 있음
- 테스트 코드의 표현이 훨씬 간결하고 직관적이라함
- 설치 : npm i -D jest or yarn add -D jest
TDD (Test Driven Development) : 기능에 대한 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 방식
- 구현할 기능의 아주 세부적인 사항에 대한 테스트 코드를 작성 후 테스트
- 해당 테스트가 성공할 정도의 개발 코드만 작성
- 실패가 예정된 코드를 먼저 작성하기 때문에 테스트 통과 과정을 거치며 자연스럽게 코드 리팩토링이 됨
- 또한 테스트 코드를 작성을 하기 위해선 해당 기능의 요구사항을 분석하고 이해해야 되기 때문에 코드의 전반적인 구조가 좋아짐
사실 부트캠프 다녔을때 기본적인 학습은 하긴 했었고, 이후 프로젝트에서 시간나면 테스트 코드 연습하려고 했으나,
시간이 나긴 커녕 오히려 부족해서 허덕이는 바람에 제대로 해보질 못했기 때문에 아쉬웠던 기억이 있다.
이번 학습에 앞서 mock 객체 관련해 상당히 이해하기 어려웠던 기억이 있었어서 두려움이 앞섰지만, 내가 개발자로 살아가는한 언젠가 마주할 부분이라고 생각해서 다시 한 번 미약하지만 한 발을 내딛게 되었다.
다만, 하루 이틀만에 숙련될 문제는 아닌거 같아 시간을 여유롭게 두고 천천히 벽을 깨보려고 한다.