Test Driven Development

1. TDD?

  • 프로덕션 코드보다 테스트 코드를 먼저 작성하여, 테스트가 구현 과정을 주도하도록 하는 방법론

순서1 : RED

  • 실패하는 테스트 작성

순서2 : GREEN

  • 테스트 통과 최소한의 코딩

  • 구현 코드의 품질은 중요하지 않다.

순서3 : REFACTOR

  • 구현 코드 개선

  • 테스트 통과 유지

2. TDD 의 핵심 가치 (빠른 피드백)

선 기능 구현, 후 테스트 작성

  • 테스트 자체의 누락 가능성

  • 특정 테스트 케이스만 검증할 가능성

    • 해피 케이스

    • 개발 과정에서 인간의 사고가 편협하게 굳어지기 때문에, 예외 케이스를 검증하지 못할 수 있다. (불확실성)

  • 잘못된 구현을 다소 늦게 발견할 가능성

선 테스트 작성, 후 기능 구현

  • 복잡도가 낮은, 테스트 가능한 코드로 구현할 수 있게 한다.

  • 쉽게 발견하기 어려운 엣지 케이스를 놓치치 않게 해준다.

  • 구현에 대한 빠른 피드백을 받을 수 있다.

  • 과감한 리팩토링이 가능해진다.

    • 테스트라는 안전 장치가 있기 때문에!

3. TDD : 관점의 변화

클라이언트 관점에서의 피드백을 주는 Test Driven

4. 키워드 정리

  • TDD

  • 레드 - 그린 - 리팩토링

  • 애자일(Agile) 방법론 vs 폭포수(Water pool) 방법론

  • 익스트림 프로그래밍(XP, eXtreame Programming)

    • 익스트림 프로그래밍의 방법론으로 TDD 제시 - 켄트 백

  • 스크럼(Scrum), 칸반(Kanban)

Last updated