TDD(Test Driven Develop)

minjjai·2023년 1월 9일
0

TDD

TDD는 Test Driven Develop의 약자로, 테스트 주도 개발을 의미한다.
기능과 서비스를 개발한 후에 테스트 코드를 작성하고 테스트하는 것이 아닌 테스트를 먼저 작성하고 테스트를 통과하는 기능과 서비스를 개발하는 것이다. 더욱 안정성있고 견고한 개발을 진행하기 위해 테스트의 중요성은 날이 갈수록 더 커져만 간다. 이 글에서는 TDD의 진행 순서와 방식, 그리고 TDD의 장단점에 대해서 다뤄보고자 한다.

좋은 Test?(FIRST)

좋은 테스트의 특징은 First라는 규칙을 따른다.

  • Fast 테스트는 빠르게, 자주 진행될 수 있어야 한다.
  • Independent 각각의 테스트는 서로 의존적이지 않아야 하고 독립적이어야 한다.
  • Repeatable 어떤 환경에서든지 반복적으로 진행할 수 있어야 한다.
  • Self-Validating 테스트의 결과는 항상 성공 혹은 실패를 반환해야 한다.
  • Timely 테스트 코드는 테스트를 진행하고자 하는 서비스 혹은 기능이 개발되기 전에 구현해야 한다.

TDD 방법론

TDD의 단계

  1. 실패하는 테스트를 작성한다. 아주 작은 테스트라도 상관없다.
  2. 테스트를 통과하는 최소한의 코드를 작성한다.
  3. 모든 테스트가 성공의 결과를 반환할 경우에 새로운 테스트를 작성한다.
  4. 새로운 테스트를 통과하기 위한 코드를 추가 혹은 수정한다.
  5. 위의 1 ~ 4단계를 반복한다.
  6. 코드 중복 제거 등의 리팩토링을 진행한다.

TDD 방법(In Spring)

  • TDD로 개발시 Repository -> Service -> Controller의 순서대로 진행한다.
    반대로 진행하는 경우도 있으나 Repository부터 작성하는 것이 개발의 흐름을 매끄럽게 할 수 있다.

TDD의 장점

  • 기능 개발, 또는 코드의 변경이 있을 시에 테스트를 수시로 진행해 서비스의 안정성을 점검할 수 있다.
  • 코드 리팩토링시에도 안정성을 확보할 수 있다.
  • 장기적으로 개발 및 테스팅에 들이는 시간과 비용을 줄일 수 있다.
  • 개발에 재미를 붙여줄 수 있다.
  • 깔끔한 코드를 작성할 수 있다.

사실 테스트 주도 개발 방식이 빛을 보는 것은 개인적으로 생각하기에 개발 초기보다 어느 정보 개발이 진행된 시기가 아닐까 싶다. 개발 초기에는 손보거나 수정할 코드가 그리 많지는 않다. 때문에 개발 초기에는 빠른 개발이 가능한데, 테스트를 먼저 작성하고 기능 개발을 하게 되면, 테스트 코드를 작성하는 시간, 테스트를 진행하는 시간이 추가된다. 사람에 따라서는 테스트를 빨간 불에서 점점 초록불로 클리어해가는 과정을 즐기며 할 수도 있다.
개발이 어느 정도 진행된 중 ~ 후반부에는 테스트가 빛을 확실히 보는 때 인것 같다. 사실 개발 초기에나 후기에나 테스트를 작성해야하는 것은 같다. TDD방식대로 개발을 하면 개발 진행 도중에도 코드의 수정이 있을 시, 테스트를 통해 코드의 안정성을 수시로 확보할 수 있다. 또한 TDD는 테스트를 통과하기 위한 최소한의 코드로 개발을 진행하기 때문에 코드의 가독성이나 효율측면에서도 도움을 줄 수 있다. 개발 초기에는 테스트 코드를 작성하는 것이 지루하거나 귀찮게 느껴질 수 도 있지만, 결과적으로는 개발의 시간을 더 단축시켜줄 수 있는 것이다.

profile
BackEnd Developer

0개의 댓글