테스트 코드 도입을 위한 사전 조사

hyunwoo Jin·2022년 11월 13일
0
post-custom-banner

캐치캐치 프로젝트 1차적으로 배포 후 고도화를 위해 테스트 코드 도입을 위한 사전 조사

테스트 코드(TDD)를 작성하는 이유

  • 예상치 못한 문제를 조기 처리 가능
  • 작성한 코드가 의도한 대로 작동하는지 검증 가능
  • 코드 변경에 대한 사이드 이펙트를 줄이는 예방책
  • 코드 수정이 필요한 상황에서 유연하고 안정적인 대응이 가능
  • 코드 변경 시, 변경 부분으로 인한 영향 쉽게 파악 가능
  • 코드 리팩토링 시 기능이 동일하게 구현되었는 지에 대한 구별과 판단이 가능

테스트 코드의 종류

단위테스트 (unit)

  • 코드에서 가장 작은 한 묶음인 함수, 클래스 같은 모듈에 대한 테스트
  • 프론트엔드에서는 파일구조를 컨테이너/컴포넌트로 나눌 때 컴포넌트에 대한 테스트가 단위테스트 에 해당됨

통합테스트 (integration)

  • 여러 모듈끼리 연결이 있는 코드에 대한 테스트
  • 객체끼리 데이터를 주고받고 여러 모듈을 핸들링하는 코드에 대한 테스트
  • 프론트엔드에서는 파일구조를 컨테이너/컴포넌트로 나눌 때 컨테이너에 대한 테스트, 간단하게 말해 페이지에 대한 테스트
  • 어떠한 함수나 기능에 따라 원하는 컴포넌트로 이동 및 상호작용이 이루어 지는 지를 확인한다

인수테스트 (Acceptance)

  • 코드의 기능 보다는 비즈니스에 초점
  • 애자일 개발 방법론에서 파생됨
  • 익스트림 프로그래밍에서 사용하는 용어
  • 프로젝트에 참여하는 사람들(ex. 기획자, 클라이언트 대표, 개발자 등)이 토의해서 시나리오를 만들고, 개발자는 이에 의거해 시나리오를 인수 받아 개발
  • 시나리오에서 요구하는 것은 누가, 어떤 목적으로, 무엇을 하는가 인데 이런 기능은 API를 통해 드러나며 인수 테스트는 주로 이 API를 확인하는 방식으로 이루어 짐
  • e2e 형식을 이용함

e2e(end to end) 형식은 모듈, 코드 품질을 보증하던 테스트와 다르게 코드를 통해 사용자 입장에서 테스트하는 방법을 말합니다. 예시로 들면 Cypress, Selenium 같은 툴로 실제 사용자처럼 개발 환경으로 구성된 사이트에 들어가서 테스트를 하는 코드를 작성하면 e2e라고 말할 수 있습니다.

마치며

테스트 코드를 조사 하기 전까지는
"테스트 코드가 꼭 필요할까?"
"구현을 도와주는 하나의 보조 수단정도 아닌가?"
라고 생각했다. 조사를 하다보니 테스트 코드는 생각보다 중요했고 필수사항이였다. 테스트 코드를 위해서 기존 코드의 설계도 바뀔 수 있고 구현과 테스트는 같은 레벨로 보아야 한다는 것이다. 상황에 맞는 적절한 테스트를 선택해서 활용할 필요가 있다. jest 를 통해 테스트 튜토리얼을 통해 다루어 본 후 프로젝트에 적용할 예정이다. 스켈레톤 UI 나 API 통신이 존재하는 컴포넌트에 대한 단위테스트를 도입하고 각 페이지 별로 통합테스트를 진행하면 좋을 것 같다는 생각이다.

참고 자료1
참고 자료2
참고 자료3

profile
꾸준함과 전문성
post-custom-banner

0개의 댓글