우아한테크코스[프리코스]

[3주 차] TDD

문상휘파람 2024. 11. 5. 14:42

TDD 에 대해 학습한 이유


3주 차 학습 목표 중 하나가 "클래스와 함수에 대한 단위 테스트를 통해 의도한 대로 정확하게 작동하는 영역을 확보한다." 입니다.
해당 문구를 접하였을 때, 함수를 작성할 때마다 테스트 코드를 작성하라는 의미로 파악하였고, 2주 차때 접한 TDD 강의가 생각났습니다.
학습 목표에 따라, 목표를 달성하기 위해 TDD 가 무엇인지에 대해 정리하게 되었습니다.

 

 

TDD(테스트 주도 개발) 란 무엇인가?


  • TDD란 테스트 주도 개발입니다. 메서드마다 작은 테스트 케이스를 작성하면서 이를 통과하는 코드를 추가해 나갑니다.

TDD, 리팩토링 == 운동 : 평생동안 연습하겠다는 마음으로 시작해야 합니다

 

어떤식으로 테스트 코드를 작성해야 하는가


  1. 실패하는 테스트 코드를 만듭니다.
  2. 성공하는 테스트 코드를 만듭니다.
  3. 리팩토링합니다.

1,2 단계는 누구나 할 수 있다. 리팩토링 하는 것이 정말 중요합니다.

 

 

리팩토링은 어떻게 해야 하는가


  • 메서드 분리 리팩토링을 진행합니다
    1. 한 메서드에 오직 한 단계의 들여 쓰기만 한다.
    2. else 예약어를 쓰지 않는다.
    3. 메서드가 한 가지 일만 하도록 구현한다
    4. 로컬 변수가 필요한가?
    5. compse method 패턴 적용
  • 클래스 분리 리팩토링을 진행합니다
    • 객체 지향 생활 체조 원칙에 따라 리팩토링한다.

 

의식적인 연습이 필요하다


  1. 첫째, 효과적인 훈련 기법이 수립되어 있는 기술 연마
  2. 둘째, 개인의 컴포트 존을 벗어난 지점에서 진행, 자신의 현재 능력 을 살짝 넘어가는 작업을 지속적으로 시도
  3. 셋째, 명확하고 구체적인 목표를 가지고 진행
  4. 넷째, 신중하고 계획적이다. 즉, 개인이 온전히 집중하고 '의식적'으로 행동할 것을 요구
  5. 다섯째, 피드백과 피드백에 따른 행동 변경을 수반
  6. 여섯째, 효과적인 심적 표상을 만들어내는 한편으로 심적 표상에 의존
  7. 일곱째, 기존에 습득한 기술의 특정 부분을 집중적으로 개선함으로 써 발전시키고, 수정하는 과정을 수반

 

의식적인 연습으로 효과적으로 연습하자

 

 

Ref) https://www.youtube.com/watch?v=bIeqAlmNRrA