TDD란? 테스트 코드의 필요성

hyerin·2023년 10월 22일

오늘은 우테코 프리코스에서 접한 테스트 코드에 대해서 정리해보려고 한다.

오늘 공부할 내용

  • TDD의 의미와 필요성
  • 프론트엔드 테스트의 종류
  • 프론트엔드의 테스트 방법 => jest
  • jest의 사용법

TDD란?

TDD, Test Driven Development

TDD는 테스트 코드를 작성하고, 이를 기반으로 개발의 효율성을 높이는 개발 방법이다.

코드를 짜기 전에 테스트 코드를 작성하고, 코드 개발과 테스트 코드를 병행함으로써 개발의 품질과 시간 단축을 꾀하는 방법이라고 할 수 있다.

더 세부적인 장점은 다음과 같다.

1. 코드 퀄리티의 상승
테스트 코드를 먼저 작성함으로써 일어날 수 있는 에러를 예방하고, 더 단단하고 잘 짜여진 코드를 짤 수 있다. 즉, 테스트 코드는 코드라는 그림을 잘 만들기 위한 밑그림 역할을 한다.

2. 더 빠른 피드백
코드의 품질과 관련된 피드백을 빠르게 제공하므로 결함을 쉽게 식별하고 수정할 수 있다. 수동으로 테스트를하는 것보다 좋은 것은 물론, 실제 서비스를 배포할때 결함을 찾는 것보다 훨씬 빠르다.

3. 개발 시간 단축 가능
테스트 코드로 어떻게 시스템이 동작해야 하는지를 알게 되면, 개발을 더 빠르게 할 수 있다.

4. 더 좋은 문서화
테스트 코드를 작성한 문서는 그 자체가 문서이다. 시스템의 동작 원리를 자동으로, 최신 상태로 반영했기 때문이다.

즉, TDD는 코드의 품질을 높이는 테스트 역할도 하지만, 그 자체로 시스템의 동작원리가 잘 녹아있는 문서의 역할도 하고 있다. 테스트 코드는 코드 개발 전, 후에 모두 큰 역할을 할 수 있다. 개발 전에는 코드의 밑그림 역할을, 개발 후에는 코드가 잘 작동하는지를 알려주는 채점자 역할을 한다. 이것이 TDD의 장점이다.

프론트엔드 테스트의 종류

프론트엔드 테스트는 크게 3가지로 나눌 수 있다.

(1) Unit test

어떤 함수(컴포넌트)를 직접 호출해 리턴 값이 제대로 나오는지 확인하는 테스트이다. 선택된 컴포넌트만 테스트하는 얕은 렌더링을 한다.
함수, 모듈, 클래스 등 작은 단위의 테스트를 진행한다.

(2) Snapshot Test / Integration Test

테스트 최초 진행시에 스냅샷을 저장해 놨다가, 이후 이와 비교해서 컴포넌트의 마크업 및 스타일이 바뀌지 않았는지 확인한다. 이 테스트를 통과하지 못한다면, 로직을 변경할 때 컴포넌트의 외관에 의도치 않은 영향을 주었다는 뜻이다. 즉, 컴포넌트의 안정성을 테스트하는 작업이다.
다른 말로 통합 테스트라고 하는데, 하나 이상의 모듈들, 클래스들이 합쳐진 통합 컴포넌트를 테스트 하는 것이다.

(3) E2E Test

최상위에서 진행하는 테스트이다. 크롤링과 비슷한 방법으로 마치 사용자와 상호작용하듯 테스트를 한다. 가장 시간이 오래 걸리고 디버깅이 어렵지만, 다수의 컴포넌트가 얽힌 문제를 해결할 수 있다는 장점이 있다.

요약

TDD 방법론은 코드의 안정성과 품질을 높인다는 장점이 있다. 하지만 작성해야 할 코드가 증가하므로, 개발 시간은 늘어날 수 있다. 따라서 프로젝트의 긴급성이 높다면 TDD는 안 좋을 수 있다.

http://clipsoft.co.kr/wp/blog/tddtest-driven-development-%EB%B0%A9%EB%B2%95%EB%A1%A0/

profile
글쓰기의 시작은 나를 위해, 끝은 읽는 당신을 위해

0개의 댓글