20230302 [TDD란 무엇인가?]

Daisy🌷·2023년 3월 2일
0

테스트 주도 개발 (Test Driven Development)

  • 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.
  • 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다.
  • 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다.
  • 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다.

TDD 사이클(RED→GREEN→REFACTOR)

TDD 는 RED → GREEN → REFACTOR 세가지 사이클을 반복하는 일정한 리듬 속에서 진행된다.

1. RED: 테스트 코드 작성

  • 동작하는 프로덕션 코드가 없는 상황에서 테스트 코드를 먼저 작성한다.
  • 앞으로 작성될 프로덕션 코드가 어떤 동작을 하면 좋을지 적는다. 이는 마치 요구사항 같은 것이다.
  • 당연히 테스트 코드를 먼저 작성하기 때문에 테스트 코드가 기대하는 로직이 실행되지 않아 테스트는 실패할 것이다.
  • 핵심은 실패하는 테스트 코드를 작성하는 것, 즉 RED 를 띄우는 것이다.

2. GREEN: 테스트를 통과하는 최소 코드 작성

  • 방금 작성한 실패하는 테스트 코드를 통과하도록 만드는 최소한의 코드를 작성한다. 지금 필요한 것은 가장 빠르게 GREEN 을 보는 것이다.
  • 빠르게 구현할 수 있는 깔끔한 코드가 있다면 바로 작성하면 된다. 하지만, 깔끔하게 코드를 작성하는 일이 오래 (몇분 정도) 걸릴 것 같다면 일단 테스트 코드를 통과하는데에만 집중하여 코드를 작성하자.
  • 켄트벡은 이를 죄악이라고 표현한다. GREEN을 보기 위해서는 어떤 죄악을 저질러도 상관없다.
  • 명백한 실제 구현을 입력하는 방법도 있지만, 최대한 빨리 GREEN 을 보기 위해서는 상수를 반환하는 코드를 작성하고 점진적으로 변수로 바꾸어가는 방법도 있다.

3. REFACTOR: 리팩토링

  • 방금 GREEN 을 통과하기 위해 저지른 죄악(더러운 코드) 를 수습한다.
  • 빠르게 GREEN 을 보기 위해 작성한 더러운 코드를 좋은 코드로 리팩토링 한다.
profile
티스토리로 블로그를 이전했습니다. 😂 구경 오세요! 👉🏻 https://u-ryu-logs.tistory.com

0개의 댓글