TDD (Test Driven Development)

Cherry·2022년 12월 9일
0

TDD란?

TDDTest Driven Development의 약자로 테스트 주도 개발을 뜻한다.

이름에서 짐작할 수 있듯이 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 코드를 먼저 작성하고 이를 통과할 수 있는 코드를 추가하는 과정을 반복하며 개발하는 것을 뜻한다.

짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순 설계를 중요시한다.

테스트 코드를 먼저 작성해야 하는 이유는?

TDD에서 처럼 테스트 코드를 프로덕션 코드보다 먼저 작성해야 하는 이유는 무엇일까?

  • 깔끔한 코드를 작성할 수 있다.
  • 장기적으로 개발 비용을 절감할 수 있다.

TDD의 궁극적인 목표는 최대한 깔끔하게 코드를 작성하는 것이다. 아래에 나올 TDD의 개발 주기에는 리팩토링 단계가 있는데 해당 과정을 거치면서 중복된 코드들은 제거되고, 복잡한 코드들은 깔끔하게 정리할 수 있다.

TDD의 개발 주기

  • Red 단계: 실패하는 테스트 코드를 작성한다.
  • Green 단계: 테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
  • Yellow 단계: 리팩토링을 진행한다.

여기서 중요한 것은

  • 실패하는 테스트 코드를 작성할 때까지 실제 코드를 작성하지 않기
  • 실패하는 테스트 코드를 통과할 정도의 최소한의 실제 코드만 작성하기

이다.
이를 통해, 실제 코드에 대해 기대되는 바를 보다 명확하게 정의함으로써 불필요한 설계를 피할 수 있고, 정확한 요구사항에 집중할 수 있다.

TDD의 장점

그렇다면 이런 TDD의 장점은 무엇일까?

  1. 보다 튼튼한 객체지향적인 코드 생산 가능
  2. 재설계 시간 단축
  3. 디버깅 시간 단축
  4. 테스트 문서 대체 가능
  5. 추가 구현 용이

TDD의 단점

  • 생산성 저하: TDD를 도입하면 개발 속도가 느려진다고 생각하는 사람이 많기 때문에 SI 프로젝트에서는 납기일 준수를 위해 잘 사용하지 않는다고 한다.

사실 이건 단점이라기 보다는 아직까지 남아있을까 싶은 편견..? 이라고 개인적으로 생각하는 바이다.

참고
TDD(Test-Driven-Development) 방법론에 대해서
TDD 개발 주기 이미지
[TDD] 단위 테스트와 TDD(테스트 주도 개발) 프로그래밍 방법 소개 - (1/5)

profile
호기심 많은 백엔드 개발자입니다 😝

0개의 댓글