윤개발

TDD - 테스트 주도 개발 by 켄트 백 본문

테스트

TDD - 테스트 주도 개발 by 켄트 백

DEV_SJ 2021. 7. 2. 16:53

TDD 책을 읽으며 작성한 내용입니다. Test Driven Development: By Example - 저자: 캔트백


테스트 주도 개발의 궁극적인 목표는 "작동하는 깔끔한 코드" 이다.

  • 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
  • 중복을 제거한다.

TDD의 주문

  1. 빨강 - 실패하는 작은 테스트를 작성한다. (컴파일 조차 되지 않을 수 있다)
  2. 초록 - 빨리 테스트가 통과하게끔 만든다. (이를 위해 어떤 죄악을 저질러도 된다)
  3. 리팩토링 - 통과하게만 하는 와중에 생겨난 중복을 제거한다.

일반적인 TDD의 주기

  1. 테스트를 작성한다. 어떤식으로 나타나길 원하는지 이야기를 써내려나간다. 올바른 답을 얻기 위해 필요한 이야기의 모든 요소를 포함시켜라.
  2. 실행 가능하게 만든다. 무엇보다 중요한 것은 빨리 초록 막대를 보는 것이다. 깔끔하고 단순한 해법이 명백히 보인다면 그것을 입력하라. 만약 몇분정도 걸릴 거 같으면 일단 적어놓은 뒤에 초록막대를 보는 것으로 돌아오자.
  3. 올바르게 만든다. 이제 시스템이 작동하므로 직전에 저질렀던 죄악을 수습하자. 중복을 제거하고 초록막대로 되돌리자.

빠른 초록색을 보기위한 전략

  1. 가짜로 구현하기: 상수를 반환하게 만들고 진짜 코드를 얻을 때 까지 단계적으로 상수를 변수로 변경한다.
  2. 명백한 구현 사용하기: 실제 구현을 입력한다.(뭘 입력해야 할지 알때)

핵심

tdd의 핵심은 테스트를 먼저 개발해서 피드백을 빠르게 받는 것이다. 자동화된 코드에 의해 테스트를 받자. 기능을 많이 변경했을 때 두려움을 걱정을 지루함으로 바꿔주는 기능이다. 작은 step을 밝아서 성공시키는 과정 자신감이 있으면 큰 step을 밟는다.

 

Money 예제 코드

https://github.com/Ysungjae/TDD

 

Ysungjae/TDD

Contribute to Ysungjae/TDD development by creating an account on GitHub.

github.com

 

Comments