TDD란 무엇인가

  • Next Step 강의를 들으면서 Tdd에 대해서 제대로 공부하게 되었다.
  • 가장 기본적인 정의이지만 Tdd의 의의에 대해서 설명을 되게 친절하게 헤줘서 정리를 조금씩 해두려고 한다.
  • 참고로 이번 Tdd에서는 JUnit 기반으로 이루어져있다.

TDD란

  • TDD = Test First Development + Refactoring
  • 프로그래밍 의사결정과 피드백 사이의 간극을 의식하고 이를 제어하는 기술이다
  • TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점이다. TDD는 분석 기술이며, 설계 기술이기도 하다.

TDD 방법 & 사이클

image

  1. 먼저 실패하는 테스트 케이스를 작성한다.

    • 그럼 컴파일 에러가 발생할 것이다.
  2. 테스트가 성공할 수 있도록 실제 코드를 작성한다.

    • 이 때는 리팩토링 하지 않고, 지저분한 코드이더라도 일단 테스트를 통과할 수 있도록 작성한다.
    • 이렇게 하는 이유는, 일단 테스트를 성공하게 만들어놔야 마음이 편안해진다. 그래야 더 창의적인 사고를 통해 리팩토링할 수 있다.
  3. 리팩토링한다.
  4. (반복)

TDD 이점

  • 엄청 많은 이점을 가지고 있지만 생각지 못한 부분에 대한 것들을 기록.

구현과 설계에 집중할 수 있다.

  • 원래 구현과 설계를 동시에 하려고 하면 힘들다. 한번에 한가지에 집중하려고 노력해야 한다.
  • 구현에 집중

    • 실패하는 테스트 -> 테스트 성공

      • 로직을 구현하는 것에 집중
      • 테스트를 통과하기 위해 어떠한 행위도 허용
  • 설계에 집중

    • 리팩토링

      • 메소드, 클래스 설계
      • 클린코드 구현

요구사항 분석 & 정리를 예리하게 할 수 있다.

  • 테스트 케이스를 여러가지 작성함으로써 요구사항을 고민, 정리할 수 있다.

Written by@[June]
Backend Developer