TDD 정의 및 장단점

오성민·2023년 2월 22일
0

CS

목록 보기
8/10

목차

  • TDD란?
  • 진행방식
  • 장단점

TDD란?

TDD(Test Driven Development)란? 테스트 주도 개발이라는 뜻이다.
기존의 개발 주기와는 굉장히 다른 개발 주기를 가지고 있다. 먼저 테스트 코드를 작성하고, 이를 통과하는 코드를 짜는 주기를 가진다.
테스트 주도 개발은 애자일 방법론 중 하나인 XP의 기반을 둔 단순한 설계를 중요시한다.

XP란?

XP(eXtream Programming)란? 지속적으로 프로토타입을 완성하는 애자일 방법론 중 하나로 추가 요구사항에 매우 유연하게 대처가 가능하다.

TDD 진행방식

기존에 기획 > 설계 > 개발 > 테스트 > 수정 이라는 주기와는 다르게
테스트 > 개발 > 수정 > 테스트 를 반복한다.
그래서 중요한 것은 실패하는 테스트 코드를 작성할 때까지 실제 코드를 작성하지 않고, 이후에 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성하는 것이다.
이를 통해서 중복 코드를 줄이고, 요구사항을 명확하게 할 수 있다.

TDD 장단점

장점

  • 버그가 발생하는 위치를 명확하게 할 수 있다. 굉장히 작은 단위 테스트부터 하기 때문에 문제가 발생을 해도 좀 더 수월하게 밝힐 수 있다.
  • 지속적으로 변경되는 요구사항에 유연하게 대처할 수 있다. 많은 부분의 개발이 진행이 된 이후에 요구사항을 받아들이고 수정을 한 후 버그가 발생을 하면 해당 버그를 찾기는 굉장히 어렵다. 하지만 위에 장점에서 얘기한 것처럼 찾기가 수월하다.
  • 코드가 간결해진다. 코드 작성 전에 테스트 코드를 먼저 설계하고 작성을 함으로써 요구사항을 명확히 하면서 코드가 간결해진다.
  • 손을 벗어나기 전에 피드백을 빠르게 받을 수 있다. 개발 프로세스에서 거의 마지막에서 '인수 테스트'가 이루어진다. 이 때에 버그가 발생을 한다면 디버깅이 굉장히 어렵다. 하지만 TDD는 작은 부분까지 모두 테스트가 완료됐음으로 좀 더 명확해진다.
  • 확장성 및 수정성이 높아진다. TDD는 반복적인 유닛테스트로 최대한 기존 코드에 영향을 주지 않으면서 확장 및 수정이 가능하다.

단점

  • 생산성이 낮아진다. 여러 단점이 존재하겠지만 이 단점이 가장 크다고 생각된다. 기존에 1번 작성할 코드를 2번 작성하는 것이다. 그리고 실패 테스트 작성 > 테스트 > 성공 테스트 작성 > 테스트 ... 를 진행하면서 결과물이 늦게 나오기 때문에 납기 일자가 중요한 프로젝트면 사용하기 현실적으로 어렵다.
profile
풀스택을 지향하는 개발자

0개의 댓글