TDD, 리팩토링이란?

1. 테스트 주도 개발, Test Driven Development

  • 프로덕션 코드는 프로그램 구현을 담당하는 부분으로 사용자가 실제로 사용하는 소스 코드를 의미한다.

  • 테스트 코드는 프로덕션 코드가 정상적으로 동작하는지 확인하는 코드이다.

2. TDD?

  • Test First Development + Refctoring

  • 켄트백의 TDD by Example 에 따르면,

  • TDD란 프로그래밍 의사결정과 피드백 사이의 간극을 의식하고, 이를 제어하는 기술이다.

  • TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점이다. TDD 는 분석기술이며, 설계 기술이기도 하다.

3. TDD를 하는 이유

  • 디버깅 시간을 줄여준다.

  • 동작하는 문서 역할을 한다.

  • 변화에 대한 두려움을 줄여준다.

4. TDD 사이클

  1. 실패하는 테스트를 구현한다.

  2. 테스트가 성공하도록 프로덕션 코드를 구현한다.

    1. 이 때 작성하는 코드는 최대한 빠르게 성공하는 코드를 짜는 것을 목표로 한다.

  3. 프로덕션 코드와 테스트 코드를 리팩토링한다.

5. TDD 원칙

  • 원칙 1 : 실패하는 단위 테스트를 작성할 때까지 프로덕션 코드를 작성하지 않는다.

  • 원칙 2 : 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.

  • 원칙 3 : 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

Last updated